Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Devtober Log 2022

A topic by Anemone created Oct 02, 2022 Views: 268 Replies: 18
Viewing posts 1 to 19

HI,

I completely forgot we were anywhere near October until today when I woke up and realized my phone said it was October, and then I forgot about Devtober until a few hours ago. I was like "Wait, since it's October, that means it's also Devtober," and then I was like "Should I do Devtober this year?" and then I was like "Well, if I do, it'll be my 3rd Devtober in a row, and keeping up the streak would be cool," and so here I am. 

Very conveniently, I happen to have started a small new project in the past week, so I'll just use that as my Devtober project this year. I'll tell you a bit about it for my Day 1 post.

(1 edit)

DAY 1

I am making a shooting game where you play as the last remaining railgunman of an abandoned bunker, holding the line against aliens or creatures or whatever whom show up to tear down the fort's defenses and eventually make their way to you (and kill you). It'll be a bit like the iOS game Ziggurat, Space Invaders, and Post Void. It's intended to be fairly simple, controls- and mechanics-wise. All you do is look around and shoot, though the shooting is intended to be skilled in terms of charging up the railgun / waiting for it to cooldown after a shot etc., and you need to manage which targets you're shooting and which parts of the constantly-being-attacked fort you decide to defend. I really love the simple design elegance and "last man / ship standing" feeling of Ziggurat and Space Invaders, so I decided I wanted to make a game similar to those, but using a first person perspective. And I'd like for it to have a pixel art style which is why I reference Post Void as a pixel art FPS.

I think the game will be interesting to make and I have a short design doc for it already, and it has a railgun and you WILL die one way or the other. Thanks for reading my Day 1 Devtober 2022 post woohoooooo yeah.

(+1)

Good luck! 

DAY 10

Hello I am back. I couldn't work on the project last week because of a thing that happened but anyway I'm a bit more capable of working now. I have set up the project a little bit in Unreal, cut out the template movement code, and started a bit on the railgun shooting implementation. Currently I just have a very basic raycast check for any enemies, and damage gets dealt accordingly. The railgun is intended, at the moment, to shoot through enemies, so every single enemy hit by the raycast will take damage. Screenshot below bada bing.

The railgun shoots when you release the left mouse button; tomorrow I'll try and work on pressing the left mouse button to charge your shot so you deal more damage the longer you hold it down. Eventually the railgun will have a cooldown period between shots as well, with the cooldown extending the longer you charge the shot. The intent is to make you think about each shot, and aim precisely so you catch as many enemies as possible within its area of effect. Thanks for reading, see YOU later.

DAY 11

Today I implemented a bit of functionality for charging the gun as long as you have LMB held down; its damage now increases based on how much you hold it down before releasing, and upon release there's a cooldown period before you can fire the railgun again. 

DAY 13

Today I made decent progress on getting enemy AI working. The idea is when an enemy spawns it's supposed to randomly choose between all the barricades set up in front of the player and walk towards one of them, then start dealing damage over time to the barricade once it reaches it (then once the barricade is destroyed that enemy "breaks through" and runs over to the player, killing them if they reach the player). I'm just starting on the "spawning and randomly choosing a barricade and walking over to it" part, though it's a bit buggy and I can't figure out why. I implemented a similar AI setup in a different Unreal project and referenced it heavily while working on this one, but for some reason the enemies only seem to actually move towards the barricades sometimes, seemingly depending on the barricade's location (like, just moving a barricade a little over to the left will get enemies to walk toward it, even though it was already within their Sight radius in its original position). No idea what's wrong with it but I'll be working on getting it fully functional in the next few days.

DAY 15

I worked a bit more on the enemy AI today and got it to work slightly better / managed to understand the problem slightly more, but it's still not working how I want it to. This is a really basic part of the AI that I nailed perfectly in the other project I mentioned, and as far as I can tell it's set up the same way as in that other project, so I'm not sure what the problem is. Probably like one microscopic checkbox somewhere I haven't ticked. Anyway hopefully I'll get there eventually.

DAY 17

I'm almost positive I understand the issue with the enemy movement now. I realized it differs in one specific way from the other project, which is that the enemies are meant to select specific other actors (i.e. barricades) to move to, as opposed to open space on the ground (which is how it worked in my other project). This caused a bunch of garbage to happen and it's got some stuff to do with the navmesh and which parts of it are considered OK to move to vs. not OK etc. Anyway I'm gonna get started on implementing a solution tomorrow (assuming my understanding of the issue is correct, which I'm pretty sure it is). This is my least favorite part of developing video games.

(2 edits)

DAY 18

I am so good at making video games I fixed the stuff. Enemies now properly pick a random barricade to move to, reach it within an acceptable radius (just in case other enemies crowd around the barricade) and start "dealing damage" (currently this does nothing, but the Dealing Damage state does get set properly). I also fixed a bug where the player's railgun would pass through multiple enemies as intended, but only deal damage to the first enemy it hit.

-Just beautiful-

Programmers talk about how sometimes you just have to bash your head into a problem over and over until you fix it. This is an amusing expression that's funny to imagine, however, not many people ponder the fact that bashing your head into a wall really hurts. Once you start working on trying to understand and fix an issue like the one I fixed today, though, you find yourself with oodles of time to ponder exactly how much pain wall-induced head trauma inflicts. But finally fixing the issue is pretty satisfying I guess.

DAY 19

Today I did a little bit of tuning and balancing of some variables relating to railgun cooldown, enemy health, barricade health etc. I also slapped a bit of the level together, just a bunch of barricades laid out side by side with some walls flanking them. In addition I implemented some basic functionality for enemies dealing damage to barricades, so now enemies will, upon reaching their target barricade, deal damage to it over time until it gets destroyed. I also added a little mechanic where the player's aiming speed will get slower as the railgun charges up more; I think this will give a bit more weight to the player's decision of when to start charging the railgun.

I think next I'll either work on getting enemies to run towards the player after destroying a barricade, or fleshing out the railgun a bit more, or maybe start on some art. Anyway thank goodness I didn't have to deal with any horrendous bugs or issues today.

DAY 21

Today I put together a very basic version of the last part of the enemy AI's behavior, which involves approaching the player as a new target upon destroying the target barricade. They don't kill the player yet but I'll probably be working on that next. I thought about making enemy behavior more flexible by, say, allowing for multiple rows of barricades that can be broken down, making enemies continually evaluate whether or not there are new barricades to break down between them and the player, but I don't want to get too far ahead of myself since I just want to get a basic fully playable prototype up and running first.


DAY 22

Today I just sat down and drew some concepts for what the railgun and enemies might look like in this game. Like I said I want the game to have a pixel art aesthetic; first person games that use pixel art aren't very common, but there are some really cool looking ones like Post Void and (actually that's the only one I can think of other than DOOM and a handful of random itch.io games that show up when I google "pixel art fps"). I'm also using Ziggurat (iOS) as a reference for its visual design and pixel art. I won't post the concepts I drew because it's mostly a bunch of garbage, but rest assured once I sort through this garbage later and pick stuff that I want to see in actual pixel art form, those pixels'll probably look somewhat decent.

DAY 23

Got some REAL LIVE pixel art for the railgun here look:


The green panel is meant to display the current charge of the railgun.

I think it looks pretty alright. I wanted to make something bright and recognizable that makes you go "dang I wanna shoot that thing." Might do another pass on it later, but I'm also thinking I can get some mileage out of Unreal's regular UI tools to, say, shake the railgun around as it's charging or something along those lines.

I also worked a bit more on the enemies. Now they'll kill the player the moment one of them makes contact. I also started implementing a "stun" mechanic where any enemies you shoot get stunned for a little bit; I think this will add depth to the decision of which enemy you decide to shoot and when: should you quickly tap LMB to stun a few enemies for a little bit so you can charge up and kill another approaching enemy, or just focus on dealing as much damage as possible and lining up your shots to hit multiple enemies at once? I think after I implement this stun mechanic, and a spawner that spawns enemies every so often, the game will technically be fully playable, so I'm looking forward to testing all that out.

DAY 24

TODAY I got the stun mechanic mostly working; enemies will now get stunned for 1 second when you shoot them. I want to make the stun time change depending on how long you charged the shot, but other than that it works great. I'm continuing to get more experience using Behavior Trees in Unreal which is very satisfying. I ALSO implemented a mechanic I've been wanting to get in since I started on the railgun, which is adjusting the cooldown period between shots based on how long you charged the railgun. Now it looks at the % of time you charged the gun compared to the max charge time, and divides that by a number, the result of which is the amount of time your gun will need to cool down. Here's a screenshot:


Just an absolute rainbow of debug text ain't it wonderful. Next I'll probably work on changing the stun time based on your charge time, and/or I'll look at the design currently and see what may need to be improved or built upon. Or build the enemy spawner that I mentioned last time whoops. Ok good night bye.

DAY 25

OK I made an enemy spawner that spawns enemies every so often. I also started on implementing a timer that keeps track of how long you've stayed alive, and notifies the spawner of when certain "thresholds" are reached so that it can reduce the time between enemy spawns. This is being done to give the game a difficulty curve so you aren't just shooting ~one enemy at a time the whole time. It's a bit buggy right now but the basic functionality of spawning an enemy every so often does work, so TECHNICALLY the game is fully playable since you *can* die and you *can* continue to shoot enemies as long as you can manage to keep them from touching you. Very exciting and cool, good job to me.

(1 edit)

DAY 26

Today I cut out some of the code relating to the difficulty curve threshold stuff because it sucked and was really messy, gonna redo it later. I ALSO realized the stun mechanic could be more interesting so I added an additional knockback effect when you shoot an enemy, so now they'll get knocked back a bit and get stunned for 1 second (like before). Right now this is extremely overpowered since you can just quickly click LMB for minimal shot cooldown while whittling down enemies' HP and keeping them away from you super easily. At its core though it does feel pretty fun and I think it gives the railgun more of an impactful feeling; you're shooting a huge laser gun so it makes sense for it to blow enemies away somehow. It also lets you actively reduce enemies' progress towards your position by pushing them away, rather than simply delaying them for a bit like a stun would do, which gives you a bit more control over which enemies can reach you and when. This whole system could also be given additional depth with something like a "stun/knockback charge" meter, where *in between* shots a separate stun/knockback meter fills, and empties completely once you shoot, putting more force into the knockback / more time on the stun based on how full the meter was before you took the shot. I think this could help solve the balance issue I mentioned where you can just spam LMB, and it could just be more fun to use that way. Anyway this game probably isn't getting done by the end of the month but I'm looking forward to building on these systems in the future.

DAY 27

No time to work in-engine today because I was very busy BUT I will quickly write down some ideas I've had that could be interesting:

Enemies

- Big enemy with high HP and is harder to knockback / stun

- Regular enemy but it shoots projectiles towards the player on occasion, these projectiles are big bubbles that can be "popped" if shot by the player.

- Enemy that drops in from the sky ahead of the barricades and then sprints toward the player, low HP but it doesn't need to get through the barricades like regular enemies do.

Other

- Barricades can auto-repair themselves if left alone for long enough.

- Enemy spawner can move locations, and/or enemy spawners gradually increase in quantity over time and they pop up in different locations

- Temporary enemy spawner shows up on occasion and spawns the aforementioned "Big enemy"; this spawner has a health bar and you need to destroy it for it to stop spawning enemies.

DAY 28 - 31

Dawg I was busy and then I was hanging out and having fun or whatever so I didn't get to work on the game for the last few days of the jam. OK thanks for reading this update now I'm gonna write my post mortem.

(1 edit)

POST MORTEM

Overall I'm satisfied with the work I've managed to do on this game during this year's Devtober. It's the first Devtober where I don't have anything to submit (or at least anything I'd consider worthy of submitting), but I'm more fine with this than I would've been a few years ago since I've become better at forgiving myself for not working all the time every single day. There was also straight up a week and some change where I physically could not have worked on the game, so I've no reason to beat myself up over that either. Anyway let's talk about the stuff I did.

The Stuff I Did

This is gonna sound weird but I basically made no mistakes (THAT I'M AWARE OF) while working on this project during Devtober. Not to say I didn't get caught up on certain issues or bugs to fix, but once I fixed the stuff it ended up exactly how I wanted it to. And everything else I pretty much managed to implement smoothly. The game definitely needs more design and programming work, but the stuff I managed to get done this past month got done quite well. Basically, while working on this game, I experienced a lot of moments where I thought "Wow, I'm so glad I know how to do this now," whereas on a previous project I might have needed to look up every single little thing as I was going through it, or drastically compromise on the design because of my inability to do the thing properly. Still needed to look up a lot of stuff though, because making video games, but this time it was LESS. I'm just happy that I'm at the point where, when I open up Unreal, I feel like I know what I'm doing, instead of feeling like a scared wimpy goblin poking a sleeping ogre with a stick. And the best part of all of this is it only took like 4 years to get to this point.

Still, though, discipline is hard, and I had as hard of a time with it as with every other game I've worked on. Every time I sat down to work on this game during Devtober I had to do a whole ritual before sitting down at my computer and guzzle like 5 energy drinks (sometimes it was 4, ok, there I said it). The rituals do help, though, so to you I recommend finding something that makes you feel comfortable before you start working; if you're not confident or at ease or mentally ready to take on a task, you probably won't make much headway once you start. It can be an extremely simple thing, too, like going to pour a glass of water or walking around your house for a second or something. 

Also, I found that something that helped me while working on this game was constantly asking myself, as I was working on it, "What am I working on and why am I doing it?" I get distracted and lose focus easily, so I often find myself just staring at the screen wondering what I was in the middle of doing, or why I'm messing around with this particular block of code. This is because I probably have undiagnosed ADHD. In any case, though, once I got in the habit of making sure to prod my brain every so often with this question, it reduced the frequency and length of these moments. I recommend working this into your own process.

Conclusion

And thus bada bing in here lies some of my knowledge I gained while working on this project; I hope it helps you in some way. Also, wow, I've been calling this project "this project" or "this game" a lot. I don't actually have a name for it; the project is titled "Railgun" in Unreal, but that's probably not going to be its actual name. You know what, as a surprise at the end of this here post mortem I'll list a few name ideas I have for this game, because everyone is dying to know (I happen to know this for a fact). Here's a short list of ideas:

- Railgun

- Last Front

- Railgunner 

- The Arrival

- Boy, That Sure is A Lot of Aliens

- Dimension Invaders

Who knows if I'll use one of these or come up with a new one, but I figured I should lay some ideas out here since the game has gone unnamed for so long. Well I guess it's technically still unnamed since these are only potential names, but like, now I guess you can pick one you like and make it your own head canon for my game's name. Because I know you really want to do that. OK I'm out of silly stuff to say, thank you for reading and I hope this log helped.