Gamedev Godot

  • Home
  • Gamedev Godot

Gamedev Godot Contact information, map and directions, contact form, opening hours, services, ratings, photos, videos and announcements from Gamedev Godot, Game Publisher, .

This is simply a page to keep me accountable to myself on learning how to create a game, this is a hobby, but keeping this updated on a weekly level will help me progress.

20/07/2024

A small update here, I've been very productive this week and been doing several courses per day and actually started on the basic framework of my own game. The initial peer pressure I needed to make this site for seems to have passed, so most likely this is just going to be converted to a place to post updates when something significant happens on my own game prototype.

Currently my game has:
- Working third person controller
- Footsteps that update according to surfaces(Still working on how to do that on Gridmaps)
- Enemy NPC with a statemachine
- Modular Health system
- Basic Inventory

It will probably be a while until I put something together that will be worth showing, right now its just a bunch of basic meshes for testing purposes.

14/07/2024

Changing a bit on how I do these, going to stop with all the fluff and just add the more interesting things that catch my attention as I go along with the courses. This is another module of the first course so not related to the FPS above, I am done for now until they release more content for it.

Saturday
Studytime: 1 hour 55 minutes
Script on the mesh skin to handle animations and calling functions with footstep signals, a pretty clever way to handle animation that simplifies using it, I will have do something like this in my projects.

To improve shadows it seems to be a good idea to define the max distance it renders them so it matches the camera, this makes the shadows better and saves on performance. Though in the future I should probably handle this in a script on the camera, it should be easy to do.

Apparently a underscore is used to show others that a variable shouldn’t be tampered with from external scripts.

Sunday
Studytime: 2 hour 5 minutes
When exporting values its a good practice to do export_range instead so you can define max, minimum and step. This prevents values to be set to something that makes it useless like 0 or 1 million. Can also use a added string command to make it so something is shown as degrees in the export yet is radians for the script.

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.

05/07/2024

Current progress on a little FPS, still a lot of work to be done, but this should give you an idea of what I learned so far, posting in more details tomorrow.

29/06/2024

Sunday

Added a barrier around the camera and a few background items for flair, also gave the launchpad a visual upgrade. Decided to play around a bit on my own to try and make the rocket crash if it landed too hard, it took a while to figure out what to do however ended up making a new variable for linear_velocity, multiplying it with delta and then adding it to the win/lose conditions as a factor. Might still need to adjust the cut-off value a bit, but it seems to work for now. Altered the game assets a bit to make them all look a bit more interesting and added a different explosion sound for it to use at times. That’s my first exported 3D game, let me know if you want to try it.

Starting up a new section its time to build a tower defence, had a bit of trouble with the path3d not centered the GSC, but found that I had to enabled Path Local despite nobody talking about that. Without this the followpath node wouldn’t be walking in the middle of my path.

Using a setter getter, I am pretty sure I’ve used those before, but its nice to have a refresher since the other course hadn’t quite touched on that yet. Used this this to update health and damage taken by enemies completing the path. Next up was using a Raycast to get the position of my mouse relative to the camera, which helps me being able to click on things.

Monday

A function I hadn’t considered with Input. code is that it can be used to change the mouse cursor shape, setting it up so mouse cursor will change to show where you can click to change Gridmap tiles to turrets.

Back to instantiating scenes through scripts as learned in the last course, both the turret has to be spawned with a global position and then it has to spawn bullets.

Tuesday

Made sure the projectiles spawn from the barrel of a turret and then gets removed from the game after 2 seconds to not have a bunch of assets flying around forever.

Getting the turret hooked up to path3d it turns out that has a useful function called look_at(), which means after grabbing the enemy from the path3d Array the enemy position now gets tracked by the turret. Following that the projectiles need to flow in the same direction the turret is firing, here its important to have it set to Toplevel so the projectile wont change direction after being fire just because the turret turns.

Thursday

Changed the turrets to track the enemy which is in the front, this is done by grabbing the enemies from the path3d array and then comparing them to the progress. Also making it check if there is any targets left and then disable the shooting if there is nothing to shoot at. Further improving it by making a max range it will shoot from.

Added a little light animation whenever a enemy takes damage and a animation for the turret barrel.

Saturday

Started to make the enemies spawn from a script, nothing new here just using a timer and some functions in a script, but now aware you can connect a signal directly to a function already in a script rather then add a new one.

Adding a UI and a gold value to purchase turrets, then make it so killing an enemy grants a bit of gold. With that its time to make a difficulty over time curve. Not going to lie this was a ton of math and I am not entirely sure I understand all of it, but the enemies now start spawning faster and faster as time goes by so the turrets have more work to keep the base safe.

added a second curve to scale health, then made sure enemies would queue_free and make the enemies stop spawning after reaching the end of the difficulty curve.

Interestingly now on the course he is enabling path local, something which I changed at the beginning of this to make the csg forms center on the path, I wonder if this is a different from 4.1 to 4.2 which I am running.

Added a victory screen with retry and quit using the UI nodes I learned about in the previous course, with stars to show how well the player did. Changed the models with more detailed ones and changed the environment a bit.

There are lots of improvements that can still be made to this, but I am rather excited for the next module so I will come back to this later.

22/06/2024

Friday

Started up a different course focused on 3D game development, it also operates by making tiny games as its way to teach. Today I am just quickly moving through all the basics and getting setup, I did a bit of this course before, but its been updated since so starting it over.

Going a bit into delta, which is an important function we need to adjust a games framerate so its the same regardless of how powerful a computer you’re using, reminded me of running the old sonic game on a faster pc back in the day and seeing everything moving extremely fast and being unplayable.

basically you just got to multiple by delta for things that run in the process, except for commands like move and slide which already incorporates it.

The first game is going to be a bit like a old game I think was called space Taxi, basically its all about navigating a spaceship and land it.

Saturday

Starting out with a basic cylinder using a Rigidbody3d, the game is simple in that the cylinder will move from a launch pad to a landing pad and the goal is to avoid the obstacles. Making the rocket turn and boost based on its local position being the first part of this, turns out that is done by calling basis and since this is all going to be run without a Z axis you simply restrict any unneeded angles and vectors.

This is so simple the GSC items are perfectly suitable, though I might replace them later on to have something a little more interesting then basic boxes and cylinders. The goal here is really to just speed through making a basic 3D game much like I’ve been doing a 2D game up to this point to become more familiar with GDScript coding.

So far I am surprised I missed the fact that if you do two hashtags # # you can actually set a description on a exported value, making it easier for me to remember what the values do. The rocket was just made of basic cylinder shape and a cone, so I decided to change it up a bit. This time around unlike the 2D “toys” this actually is a game as it has win and lose conditions and progress, not done with this yet, but this is what it looks like so far.

20/06/2024

Ended up finishing what was released of the current course, so releasing this update a bit earlier than expected.

Sunday

letters now animate over time and a animal crossing style voice has been added, altered that to start at random places to not make it sound the same every time and make it match the length of the text. I was surprised to find the strings actually have a length() property, though I suppose I shouldn’t be too surprised.

introduction to containers, we got V and H box containers and they each nest into each other to essentially create tables of content easily, in this case rows of buttons placed neatly. This is going to make it a lot easier to do UI work then what I’ve done before.

A new concept of Lambda also helps simplify my codes, instead of having functions called in one place and then placed somewhere else in the script I can have one-off functions all defined right there on the spot making my code so much simpler to navigate. My original coding attempt would be so much easier to look through now had I learned about 3 important things Lambda, Arrays and Dictionaries. Goes to show that its a good idea to do solid fundamentals instead of skipping around learning as needed.

More then that I made my first automated loop to create buttons, using a code to generate everything and making it simple to add more.

Monday

Changed the dictionaries to be an Array dictionary which combines the two, it now allows each line to have multiple items to call in this case being a emotion texture and dialogue text. A little hard to wrap my head around the thing, but seeing as this could be used in a ton of ways I pushed through.

Tuesday

Added character and voice to the Array dictionary and also made a small appearing animation as they appear, played around with scale a bit, but decided it ultimately looked better having a simple tween animation from the side while becoming visible by increasing the alpha.

Thursday

Added keyboard shortcuts to the buttons so the left and right buttons can be used on the keyboard rather then clicking on them with the mouse and used a .disable code to make sure neither of the buttons can be pressed until the animations have played out.

More important than that I was made aware BBCode works for dialogue in Godot, but more important then that it actually has special animations build into its BBCode like Shake, Wave and Tornado. This also marks the end of what has been released of this course so far, hopefully more will be added soon, but for now I need to choose a new course to start on.

17/06/2024
15/06/2024

Saturdays are going to be the day I publish what I’ve been going through so far starting now, still going to write the summary itself at the end of a lesson as was suggested to me and then release it with the following template.

Saturday

Started working with Godot UI system for the first time, the anchors are helpful, but the most important part of it seems to be that everything is relative to its nearest parent and then the root control node. I am a little surprised how powerful this tool is, quite frankly it makes most of those visual novel focused game engines pointless outside of the premade assets they tend to come with.

I wont be making a Visual novel when I get to the point I can create my game, but I might use this system as a dialogue overlay, perhaps the time I spent trying to learn how to do digital art wasn’t a complete waste of time. Yeah AI can definitely do art better then I ever could, but right now it doesn’t seem able to make a host of different images of the same characters in different positions with eye and mouth expressions being on a different layer. I might have to consider saving up to renew my clip studio license since that was my preferred program to draw in and brush up on drawing. At any rate it doesn’t matter right now, still got a ton of concepts to understand in game development.

Themes are pretty straightforward, you basically add overrides and it keeps whatever you choose to override in the same size, color or such. After setting all that up its back to coding.

Going to juice this up next time, also adding audio soon.

13/06/2024

Just a short experiment today, made it so items disappeared when clicked with a little shrink animation and the torches able to turn off/on when clicking. Video is a bit laggy, computer was a tad busy and I am mostly doing this on my surface to avoid using the pc in my bedroom. Lucky me that Godot takes very little to run, but might have to figure out a different solution when I go into 3D to not waste too much time waiting on the pc.

10/06/2024

Update: I am going to change these accountability updates to be a weekly deal, otherwise its just too much spamming of tiny progress milestones made. I don't actually expect anyone to read these, but putting things out like this helps me push myself to get through the courses like a classroom normally would.

Just a quick session today, added some tween animations to objects that spawn from chests and went through a guided tour of the Godot dictionary, hopefully by the end of this course I will be able to understand all the jargon written in it.

Rapidly approaching the end of the released modules for this particular course, I have yet to decide which to move to after that, but I got plenty of backlogged ones saved away.

08/06/2024

This time around we're making little clickable chests with loot in them, mostly to learn how to handle mouse inputs and handle the animation player, which is pretty neat and straight forward until we enter 3D space.

Starting off with Canvasgroup I learned an important lesson about how sprites are drawn, grouping it together like that helps treat the item as one which is important especially when dealing with transparency. More important then that I now finally understand what the Onready function does, so far I have been using it because otherwise it gives an error, but I now understand that because of the way Godot launches it needs certain variables to wait until its ready.

I was also made aware that storing variables actually gives my games a performance increase, because the game can now easily reference this instead of having to make connections from scratch everytime. I was just using it because storing variables like this make changes easier as the coder, but better performance yes please.

Address


Website

Alerts

Be the first to know and let us send you an email when Gamedev Godot posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

  • Want your business to be the top-listed Media Company?

Share