06/07/2024
Sunday
Started new project, Retro FPS game, setting up a Character3d script using the basic template and altering it a bit at first to make the mouse move the camera around. Then created a simple Sandbox to test out the controls while slightly smoothing out camera movement with a pivot and adding a fall gravity to jumping.
Finally entering into using Navigation nodes for enemies, started by defining a mesh for the objects I want it to move around and then create a simple enemy with a script that allows that enemy to try and navigate to me. I’ve not gotten this far before when it comes to games, usually I was too distracted by figuring out how to model 3d characters, rig them and animate them, all of that will come in handy later its just not as important right now as the game logic itself.
Monday
Made the enemy look where its going and added an attack animation, learned a vital new information, the animation player can actually activate a function in my script, that’s incredibly useful.
Added a weapon to the player, using a weapon scene and creating inherited scenes of that to make different weapon models with different exports and meshes.
Tuesday
Added a lerp animation for weapon recoil, but more importantly made the raycast that tells what the weapon hits when firing, turned out to be pretty simple. I don’t know if the course wants me to do this later, but I decided to make the raycast range a exported value I can change so that each weapon can decide its own range.
class_name is another feature that seems useful, using it I can access a script globally just by calling that name and even use it as a “is” statement it will autocomplete.
Making me able to damage the enemy and the enemy able to damage me we now got a super basic combat going, this is getting interesting now.
Playing with particles adding a Muzzleflash and sparks on objects being hit by the raycast.
Making the gun remain visible when colliding with a wall using a subviewport, then culling the gun and muzzleflash from regular cameraview.
Wednesday
Added a bit of damage feedback and a gameover menu, then moved onto the dreaded subject of SHADERS. Question is how out of date this is going to be as Godot is changing to a Z depth which is going to possibly break old shaders. For now I’m being taught how to use the visual graph version which isn’t so bad, its pretty much the same as the shader in Blender, all we’re doing right now is making the gameover screen blur the background.
Time to add weapon variety, time to make use of the instantiated scene created for the first weapon to quickly add more.
Adding ammo to the weapons using a external ammo handling script, using enums for the first time which are kind like dictionaries except they only store constant names, doesn’t sound too useful, but combined with dictionary it makes sure I only use a key word once and makes it easy to add a export to my weapon script which makes me able to select bullet types from a list in this case.
Thursday
Added ammo pickups to get more ammo, a simple spinning box for now with a Fresnel shader to give it a glowing sphere. Created a aim function with a slight animation effect to it, slowing mouse movement and walking.
Was taught a easy way to use CSGcombiners to create fast interior rooms, this is going to be pretty useful to layout a interior room before adding details. Using it to prototype a little arena level for now, just so I have something other then my Sandbox level to move around in.
Friday
Changed the enemy to drones, fixed up the navigation mesh so they wouldn’t get stuck on slope corners and fixed a few errors in my levels corridor placement.
Saturday
Changed enemies to use a animationtree rather then just animationplayer, not too big a difference for this simple enemy, but it does transition better now since its a statemachine. Creating a lava texture in a shader by combining two noise textures, things getting a bit complicated with something called a smoothstep, the engine crashed for me for a bit while playing around with the shader though it eventually worked out.
Following this is simply adding some decorations, fixing a few bugs and then adding lights and that’s the end of this entire course, but I am going to add more stuff to this like sounds, enemy types and so on as I combine what I learned up to this point. This is going to be developing rather then learning so not sure how often I will be updating on this, I might just throw in a video when it feels complete.
I haven’t entirely decided what course to hop onto after this, its going to be either more Godot or Blender related. Thank you to those following along with this so far, I just want to repeat that yes I doubt anyone read any of this. The goal was to essentially peer pressure myself to keep doing the courses and it actually worked.