|
Post by warpzone on Apr 22, 2017 12:22:06 GMT
I've replaced my player mesh three times so far and my main enemy mesh once, not counting minor edits that reuse the old .blend file. Every single time, I had to import the new mesh, use the pull-down menus to create new Invector scripts, and copy and paste other components over one by one. I don't fully understand why I have to do this, I haven't studied Invector's scripts that closely, I only know that just replacing the mesh breaks everything, so I have to do it this way instead. I may even have broken something, and not know it unless it comes up in playtesting.
Now, I really hate art Pipelines, as a general concept. They waste time, they lock you into bad decisions and early mistakes, they're just all-around bad design if they can be avoided. Perhaps they couldn't be avoided in this case. Or perhaps I am using Invector's product incorrectly.
What say you, community of experienced professionals? Is there a better, cleaner, more efficient, less tedious way to replace my animated character model in the middle of developing my third-person combat game? Am I being unreasonable, even asking this question? Is there a Third Way of structuring this product Invector should consider for future versions? I'm out of my depth, here, and I know it. I just know I don't like Pipelines.
|
|
|
Post by uberwiggett on Apr 22, 2017 14:32:34 GMT
you should assure your art assets are complete before applying them to the game. That's the standard way. As a hobbyist though, you pretty much have to wear it. You can develop with a placeholder that can be worked on to do everything, then when your art asset is complete, just go through the new player process once. There isn't much about the player model that you need to tweak as far as the Invector bit goes, at least not that can't be replicated easily. But things like ragdoll etc will cause you grief if you replace the mesh
|
|
|
Post by warpzone on Apr 22, 2017 15:56:03 GMT
Oh, yeesh. I didn't even think about doing ragdolls. That would be a nightmare. Thankfully, my design calls for enemy corpses to disappear because there's so many enemies coming and going all the time.
I guess I'll just keep doing what I'm doing. I keep thinking there's probably another way? But it's probably more trouble than it's worth to implement it.
I absolutely cannot "finish the art assets first." That doesn't even make sense to me. I mean, yeah, placeholders, but I'm always discovering new ways of doing things I didn't know about before. Also, I did something kinda stupid and started with a visual aesthetic for this project, so it's kinda hard not to be constantly refining the graphics and the gameplay side by side. The complete reboots came when I switched base models and then again once I figured out LOD levels.
(Unity's official documentation on this is... ambiguously worded. I thought they were saying to use multiple .blend files named LOD0,LOD1, etc. Then when that didn't work I used seperate models, implemented LOD manually, and had them copy the bones and blendshapes from LOD0 via script. Just yesterday I figured out how to do it right (multiple LOD-named meshes using the same skeleton in a single blend file FYI) and this neccesitated what will hopefully be the final pipeline reboot. But you never know.)
|
|
|
Post by jgiroux on Apr 22, 2017 16:19:16 GMT
Is there a better, cleaner, more efficient, less tedious way to replace my animated character model in the middle of developing my third-person combat game?
I do it the easy way
lets say in my project im using JaneDoe model for all my testing, but now I want to use JoeDirt instead.
well I create a new scene in my project, use the invector wizard to setup my new model. drag that finished game object into my asset folders as a prefab.
load old scene with JaneDoe.
set player position to 0.0.0
drag JoeDirt prefab in, set position to 0,0,0
drag *any* custom stuff like empty weapon handlers etc to the new JoeDirt under same hierarchy.
so if JaneDoe has a weapon handler on RightHand, I would drag that to Joe Dirt right hand. copy/paste any custom scripts/ invector settings to new prefab.
now question, why are you trying to replace the mesh itself rather than just use wizard to create new with your new model? is there a lot of editing you've done on your original player that cannot be easily copied/pasted or edited to reflect same changes?
p.s. the reason just replacing the mesh breaks everything is because your invector scripts are now referencing game objects that don't exist if you replace the mesh...
such as colliders on the arms/legs of your OLD model that if you remove, no longer exist.
|
|
|
Post by warpzone on Apr 22, 2017 16:37:00 GMT
I do it the easy way All hail jgiroux, explainer of the easy way! May his threads grow long and his links become cross-referenced! now question, why are you trying to replace the mesh itself rather than just use wizard to create new with your new model? is there a lot of editing you've done on your original player that cannot be easily copied/pasted or edited to reflect same changes?
I do start with the wizard, but that only handles like 3 out of many modified components. I've got two custom bodyparts whose hitboxes I replaced with Mesh Colliders. I've got a Reflection Probe that follows the player around and informs only their reflection, so you can see the bright patches of the floor glinting off your shiny chrome feet. There's particle systems and a weapon manager I may not ever end up using. Footsteps I customized. And half this crap I just copied over from the example scene because I was impatient trying to figure out how to use it. (Why are the PDFs and TXTs all stashed in different folders? I'm not even sure if I've found 'em all yet.) Oh, and I try as much as possible to make my own copies of things, rather than editing the originals, so that if I have to re-import the unitypackage for any reason, I don't have to start over with the edits. That means the defaults don't refer to my changed version. And the Melee Combat Input needs to be copied as a component because the default keyboard bindings are terrible. All but unplayable. I'm going with Arrow Keys and Z X C space for the defaults right now. Camera is fixed-angle auto-tracking so the player never has to touch the mouse. Ideally, I won't have to say "It's much better with a controller" on the Steam storefront page to stave off angry downvotes. (Not that we're anywhere near that phase of production, of course.) Also, OnDeadTriggers to activate things like particle systems via SendMessage, which of course break every time you change its parent. And of course some of those particle systems need to point back to the mesh in LOD0 to get their initial positions and colors. The end result of all this is after replacing the Player's mesh, I always feel like I need to keep the old one laying around for a few days in the scene, just in case I missed a spot. (I keep adding examples to this post because I'm remembering them in realtime now as I update an enemy to the new player mesh. Fun.)
|
|
|
Post by uberwiggett on Apr 23, 2017 0:27:45 GMT
You're confusing mesh with bone structure, the particle fx will be tied to a bone, hence why you'd need to ref the master biped as that is the one being used. So far none of the issues you've mentioned are failings of the template, they can't actually be rectified by the code without specifically designing it for your project.
Placing the template in its own project and playing around with it to understand how it works is 100% the first thing anyone buying it should do. I was and still am lacking skills in coding and scripts and it took me a while to figure out a lot of things, but no where when i bought the product did it say this template was a "drop in assets and you have a game 100% finished". Invector has said they wanted to keep the template as open as possible, so that means you will need to understand the many aspects of game development in unity to get what you want out of it.
You'll find the animator is very intuitive, the old one seemed easier to navigate but lacked a lot of power compared to the new one. But you'll need to understand how the mecanim system works, should only take you a few hours.
The AI is basic but easy to setup to get some semblance of testable gameplay, for a 2.5d beat em up game it should be all you need, just set the roll chance to 0. The combat system is easy to get your head around, you can do all sorts of things like adjust the size of the hitbox, change the animation and set when in the animation you want the hitbox to display.
Setting up light probes, adding mesh based hitboxes, LODs etc, that's all your project, has nothing to do with the template and thus can't be handled by the template. And simply changing the mesh on the mesh renderer, well that doesn't work in any scenario.
|
|
|
Post by warpzone on Apr 25, 2017 20:40:36 GMT
The problem is I can't "finish making the character first" because that doesn't make any sense. I don't know what the final form of the character is going to be. How could I possibly know that at the beginning of development? So, I'm leaning how to make a character in general, making creative decisions about the character, and running face-first into Unity's peculiarities, all at the same time. There's no other way to get from here to where I want to be. One or more decisions I make tomorrow will inevitably reveal that a decision I made today was a mistake.
I consider the fact that you can't easily swap out the graphics a flaw in Unity's design. Which, of course, is why (barely working) solutions for "nested prefabs" exist in the asset store. Everyone knows it's a huge problem, but nobody but Unity Team can really fix it.
|
|
|
Post by shadex on Apr 25, 2017 21:40:37 GMT
I've replaced my player mesh three times so far and my main enemy mesh once, not counting minor edits that reuse the old .blend file. Every single time, I had to import the new mesh, use the pull-down menus to create new Invector scripts, and copy and paste other components over one by one. I don't fully understand why I have to do this, I haven't studied Invector's scripts that closely, I only know that just replacing the mesh breaks everything, so I have to do it this way instead. I may even have broken something, and not know it unless it comes up in playtesting. Now, I really hate art Pipelines, as a general concept. They waste time, they lock you into bad decisions and early mistakes, they're just all-around bad design if they can be avoided. Perhaps they couldn't be avoided in this case. Or perhaps I am using Invector's product incorrectly. What say you, community of experienced professionals? Is there a better, cleaner, more efficient, less tedious way to replace my animated character model in the middle of developing my third-person combat game? Am I being unreasonable, even asking this question? Is there a Third Way of structuring this product Invector should consider for future versions? I'm out of my depth, here, and I know it. I just know I don't like Pipelines. The actual "applying scripts to the mesh" should be a quick process, maybie 10 minutes at the most. You have to run the wizard, create the melee manager, ragdoll and inventory, config the hitbox's on the hands and feed. If the hands are in the same place as the old model you do not need to adjust the weapons. Use the copy parameters to copy script to identical script on the new character. So from here you can use whatever player animator you are using and swap it out with the one created from the wizard to get all your animations, and then set your inventory file so that all the weapons in the inventory are the same, then you done. I personally work on things in stages, so i'll do all the animations first, then configuring, then weapons, etc. I would work on your character model till you get a point you are happy with and leave it there for testing. Most everything is not model specific, so having the newest version of your character is not needed. Just update when you make a bunch of big changes
|
|
ara
New vMember
Posts: 22
|
Post by ara on Oct 19, 2019 19:00:01 GMT
Wondering if there is an easier way to do this now. Created my original character and everything looks great until I open up the profiler and realize that the character is 151 MB of my scene. Did some retopology and have it down to 50 MB. Have done the easy way (above) a few times during game dev, so if that is still the best way that is fine. Also thinking about a system where you can play as different characters and would be easier if there was a way to just swap out meshes on one character. (Currently am using a scriptable game object to reference into the Game Manager object, so that I can control respawn to the right character, but it does make inventory management complicated).
|
|