Indie Game Devlog #01 - Creating the Main Character

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
i just started work on my dream video game project i'm a solo developer i've released my own video game and i've done about 20 game jams i think it's about time for me to take on a bigger project and there's one that's been festering in the back of my mind for years you know already experiencing feature creep already way bigger than i can ever manage to do on my own but i'm gonna try i'm a big fan of 3d platformers and i love the jack and daxter games and my favorite game of all time is probably super mario odyssey and i want to create something that gives me the sense of fun and the sense of like freedom of exploration and the sense of adventure that those games do and i want to you know create like a twist on it it's going to borrow heavily from those ideas it's going to a lot of the movement mechanics are going to borrow from platforms that already exist and i'm going to add to them myself as well and and create like different sort of variations on on those moves so but i won't bore you with those details right now i just want to jump straight into it and get started because the longer you spend talking about it and thinking about it the less actually gets done so let's go ahead and start this game and make this character and get him moving around so the first consideration i had to make was do i build this character controller from the ground up i knew i didn't want to use unity's rigid body system because it's full of complications when you're trying to make like an accurate satisfying movement kind of game and i want this game to be slick i'm designing this game with speed runners in mind i want people to get excited about the movement tech inside the game i want people to discover new things about how to move around and when they come back to it time after time they don't feel like the controls are letting them down not able to play it in the way that they want to play it those like rigid bodies can slide around all over the place when you don't want them to and you know the collisions don't really work in the right way and if you want to get your character to move in a certain way it's very difficult to to set that up to be exactly how you want it to be without programming the maths yourself so i didn't want to do all that myself i'm not in the business of reinventing the wheel there's people who are smarter than me who've you know come up with the maths for like good character controllers and things like that and why not you know if i was working on a film i wouldn't i wouldn't be expected to you know birth robert de niro in order to use him in my film i'd just pay him money and use it so i'm going to do that and it's going to cut like a massive chunk of time out of the development of the project and make probably everything a lot smoother and a lot nicer feel so i wanted to start off with a something that was already made and then add to that myself and it's going to change a lot it's going to be completely different by the time i'm done with it but it will be really helpful to have all that set up in the beginning so here what you're looking at is we have a tool by philippe center armand and this is available on the unity asset store you can go and buy it and check it out if you want to it's absolutely amazing we've got a bunch of things already considered in here like you know collisions in tunnels uh like sticking to moving platforms or like no matter how fast they're moving around the place going up and down stairs and slopes i mean it's not obvious when you look at these games but there is maths involved in almost everything you know when you go over the top of a slope in order to stop you from launching off and into the air as you go over the slope there needs to be maths to tie you to the ground and this is already taking all of the work that i would otherwise have to do just out of the equation and it's a really stable really great tool and i'd recommend for anybody who's looking to start their own platformer but of course nothing's ever perfect in game design and there's already a problem here where once you set the camera to follow the character smoothly using his script it sort of jitters behind it and it took me a while to figure out this what this was but what it turned out to be is actually the camera is not set up right to follow the character so i set the code for the camera to update in the fixed update which is the physics update rather than the normal update which happens every frame and once i did this everything was fine but then i noticed that the character wasn't jumping sometimes when i was telling it to and that's because the control inputs were now in the fixed update which doesn't happen every frame so if i press the jump on a frame which is just in the where the physics update is just happening that might not necessarily happen on the on the immediate frame so i moved the control code back into the normal update which happens every frame and now it's all fine so the next thing i did was hook up controls so i can use a playstation controller to move around because that's the main way i imagine people playing this game and then i wanted to add my own camera to sort of stick to the floor and track the player as they're running around uh rather than just stick in one position relative to the player so that's sort of like mario odyssey might do or you know super mario sunshine or the 3ds other games and i've also set it up so that when the player is headed directly towards the camera it doesn't move i figured if people want to turn the camera around they can just do that themselves with the right analog split camera doesn't need to automatically do that for them i've also set it up so that the camera sort of looks left and right depending on whether you're going left or right so it kind of anticipates the movement the direction that you're moving in so that you can see what's ahead of you then i made it so that when you crouch the character walks at a different speed and then i decided that i didn't want to do anything more to the movement without knowing a bit more about what the character is going to look like as an animator i found that it helps to know what your character looks like a lot of the time you can do all this animation as soon as you stick the model in you realize that it's completely wrong so the inspiration i have for the style of the game is really weird and niche i found this subreddit called mobile frame zero and it just has people posting these sort of mechs these robots designs made with like very minimal amounts of lego and you get these sort of really like appealing very kind of cute almost looking robots but also look quite badass and i think that it's like perfect sort of material for a platforming video game i'm actually not a fan of the whole like look of the really complex mecca's the neon evangelion whatever [Music] i don't like that but this sort of like synthesis tea paired back this much i'm all about this so this is the first part of the model i came up with and i was quite happy with this at this point i thought this is sort of looking a lot like the designs i was seeing on the website you wanted to just try and stick it in and see it see what it looked like but it turned out that when it was in the game i just there was something missing it just didn't look right it was too bulky it was too square it was too like hard-edged i didn't think that it was cute enough to be a main character one that could be the face that i see on the box art every day so what i did was i sort of when i was in the editor i just sort of smushed all these parts together i just like compacted it a bunch just scaled everything i wasn't thinking about using these as final assets i just wanted to see if i could come to a better sort of conclusion with it and end up with this really like satisfyingly proportioned sort of buff little you know tank character but he's also cute and i was really happy with this direction i then needed to figure out what i was going to do about articulating this character and originally i was thinking i was going to create like a character rig and then i realized that this thing is solid it's a robot it's basically like the way you animate characters traditionally in games is you add a bunch of bones to them but he's essentially all bones already so i just set him up so so i could animate him just using the pivots of the objects and the hierarchy and it works just like any other rig i won't be able to use any sort of unity's fancy uh tools or anything like that that would work on skeletons but if i do this for all the characters i'll save a bunch of time you know where it takes a long time to ring a character in maya or blender and then import it in and there's always massive amounts of complications that come with doing that export settings and things to be considered so i'm actually really excited about this approach of just keeping everything within within unity almost not having to go to any other sort of like 3d cad packages apart from just modeling so then i just jumped straight into animation and i was so excited about this because when i was thinking about all the work that was gonna have to go into rigging i was thinking that animation would be days even a week off and i love this part of the process as an i've been an animator for eight years uh professionally and i actually learned to code as a hobby so animation is probably where i would consider myself an expert much more than i am a proficient coder so we've got these run and jump animations which are quite basic but i could i'm going to come back to all the animations in the future probably and beef them up i just didn't want to spend too long on anything at this point he's got like a nice little idle animation where he sort of like you know pistons up and down and once that was done i added just a frame really of landing like a transition frame it's just a keyframe that plays when you land and it squishes the character and it adds that nice little bit of impact and you might not also notice that when the character jumps this squish animation happens as well so that's what we call um anticipation in the animation world and it really helps to sort of sell this thing as being having weight to it and also having a brain you know i then decided to add some variable jump height because at the moment the character just sort of when he jumps he's just on a set arc and he always jumps to the same height but it's always perfectly smooth but in video games you want a bit more control over your jump you want it so that when you uh release jump in mid-air you might fall a bit faster or you or you hop to it like a shorter height and uh i actually followed sebastian lake's tutorial on this and he has it's really good and clear and he explains all the maths in a really easy to understand way and i highly recommend that you check that out i'll stick a link to that in the description and to everything that i've all the resources that i've used for this project the next thing i did was to add a super mario style long jump so that when you crouch and then hit jump immediately you'll do this long jump and you'll sort of glide through the air and you won't jump up as high but you'll like float really far and you get this like really nice it's satisfying to jump from you know over long distances and another thing i added that's very similar to mario is the rolling mechanic so that you can sort of do this spinning roll which you can speed up by tapping roll over and over again and i love that about um super mario odyssey i thought that was an amazing way to um you know get from place to place nobody wants to be backtracking or anything if they have to do it slowly and as i said before um this game is with made with speedrunners in mind so i'm thinking like how can i get these players to their next destination i don't want their brains to shut down while they're running and watching this like really slow run animation playing but the role wasn't working exactly how i wanted it to when it goes down slopes it was getting a good amount of acceleration down the slope but then um i wanted that momentum to sort of carry on so that if you managed to find a big slope you could really speed yourself up for a large a significant portion of the next part of the level so with a lot of tweaking i managed to make it so that you now have three tiers of momentum basically from a normal roll on flat ground you can get into this sort of heightened state is like tier 2 essentially of rolling where you're rolling at a certain speed and once you're in that sort of state it's easier to stay in that sort of speed state but if you also manage to find a slope to roll down and you manage to get up enough speed you can get into an even higher speed tier and then once you're in that tier again it's easier to stay in that but if you quit hammering on the roll button you will like slow down into one of the previous states i also had to make it so that when you're rolling you didn't stick to all the surfaces quite like you do when you're running because i i want to be kind to the speed runners i want to give them the tools but i also want to put obstacles in their way you know that's where the joy of like finding movement tech comes from is like switching between these different sort of control methods so that you can get around the level as fast as possible so you will sort of bonk and slow down if you're running over rough ground when you're rolling and that's sort of not ideal so you might want to choose like a long jump over that bit of terrain for example now i'm going to talk about a bunch of little things which might not be so obvious but they're just interesting considerations which i thought was worth mentioning the first is that i made it so that when the camera is close to a wall and it gets too close to a player it sort of avoids the player it goes above its head so you never get this sort of camera like clipping into the player you don't see the inside of the player's head almost which can sometimes be very jarring in video games and again it hurts you as a player if you're trying to if you want to be aware of your surroundings the next thing i added was that basically when you jump off of a slope that you're not able to stand on and you're sliding down before it was really like launching you uh away from the wall in essentially the direction of the wall is facing so i made it so that you can sort of like for at least one jump you can sort of stay close to the wall like stuck to the wall so that you can sort of like almost um recover yourself if you want to if there's a platform nearby and you don't want to slide all the way down this slope you now get a chance instead of immediately being launched away also it added a sticky landing so basically the rest of the time when you're running around and you have a lot of momentum you'll sort of maintain that momentum when you hit the ground you won't just stop or like immediately revert to your um you know your run speed uh but that can hurt when you're on platforms when you're like doing these like tricky platforming levels uh you don't often want to land and um you know continue sliding you're going to slide off the edge of the thing you just landed on especially if it's a small surface so i've made it so that if you release the direction you'll do this sticky landing so no matter how fast your your um you're moving in the air if you release the joystick the directional joystick you'll land with no momentum at all i also added a silly crouching animation where his head sort goes into his body and i actually really like it his big tv head disappearing like like he's a turtle or something um that's much better than the uh just scaling the whole character down that was previously happening i also didn't like the fact that when you're jumping out of a roll you get more momentum than you get when you're doing a long jump sort of like makes the long jump a bit pointless really like why wouldn't you would always just roll uh so i made it so that if you're if you're rolling then and you then jump you sort of lose a bit of momentum and you won't get as far you won't make it across a gap that you would otherwise have made it across if you were doing a long jump and again it's just forcing players to like mix up their movement you know mechanics i also added different jump animations depending on whether you're jumping straight up or you're jumping with some sort of speed in any direction and you can sort of it switches it blends between those animations in mid-air as you're changing speed so if you're running with momentum and then you stop in mid-air the legs will sort of come underneath your body and you'll do a more more vertical drop i also added some leniency so if you run off the edge of a platform you have a split second to hit jump even if you're not in contact with the platform anymore and it will still let you jump you'll find that that's the case in all platforms really it's unsatisfying if you if you don't add that and in the same way i made it so that if you hit jump bit as you're like before you even contact the ground it will then buffer a jump and you'll do a jump so you don't have these moments where you think you've jumped but then the game's like nah you did it a frame before you actually made contact with the ground so i'm not letting you jump and that's it i really hope you've enjoyed this first devlog and found it interesting if you want to support me you can check out my other game it's called go go it's a party game for three to 16 players there's a new challenge every round and it's completely free to download it's on android and ios only uses one phone doesn't use any internet and you can tell how many times i've pitched this by the speed at which i'm talking but anyway thanks a lot guys and i'll catch you in the next episode
Info
Channel: Robert Thomson
Views: 247,101
Rating: undefined out of 5
Keywords: gamedev, game dev, indie dev, indie game, speedrunning, game design, platformer, 3d platformer, devlog, solo dev, game development, game, gaming, unity, unity3d, made with unity, unity dev, adventure game, adventure, speed run
Id: yV2YAwmg6yk
Channel Id: undefined
Length: 15min 54sec (954 seconds)
Published: Fri Oct 30 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.