[Gruedorf] HatchetSoft updates Thread
This week, I did manage to make measurable progress on my gridder engine. Notably, I did implement enemy facing, so you can circle around them and they will face away/towards you as appropriate. Although with only 4 angles it doesn’t work quite as well as I’d like, but it does the job.
I also implemented the basics for inventory and equipment slots, and clickable movement buttons. I do want the game to be potentially playable on phones too, and I started experimenting with Android exporting, though haven’t been 100% successful on that front yet.
That circle meter at the top right is part of a super sekrit game mechanic that will be revealed at a later date. Muahaha…
My goodness… March 9th? I’ve been losing for nearly 4 months… that simply won’t do!
After that last post, I did drift off of gamedev for a long while. My compo team kinda fell flat, and we didn’t end up submitting. Then any free time I may have had for dev, ended up being for some API tools for my work. Which was super fun and a good learning experience, but not very relevant for here. But I finally dusted off my gamedev shoes, and got back to working on Winter, because I’m so close to finally getting it done. In the past few days I have completed a new map, did some balance tweaking, and completed my automap system, complete with map % counter (never mind the ridiculous completion rate ;):
I also fully implemented the 4th Rune skill, which I affectionately named Bolt Storm:
There is also an associated obstacle, the Crystal, which means you now need to find this skill in order to finish the game.
Finally, I added a boss to guard the last rune. All and all, I’m quite pleased with the results. Next on the list - more and more maps to finish, add some more polish to the final boss, add an ending, and lots and lots of playtesting…
I have been on vacation since last friday, which was my birthday, so yay? Unfortunately vacation usually means I get less work on games done, and more family time, although I was able to get some gamedev time in too. Even more unfortunately, this past week has been pretty emotional, due to the passing of one of our cats. But life goes on, as they say.
I was able to do some significant changes to the final boss battle which should make it a little more fun to play, and won’t just kick you to the ending immediately after. I have added some statistics to the credits sequence so you’ll be able to see how many of each enemy you killed, just for giggles. I’ve also done some map work, editing around several maps, and about half completed a brand new one:
About 4 or so maps to go, and two of them are fairly small. The end is rapidly coming into sight, but there’s still good chunk of work left to do. I need to give every map its own unique name to display in the automap and menu screen, and I will be working on a way for the player to edit controls in game rather than have to manually edit a text file. Preferably I can allow both keyboard and gamepad controls at the same time - I did it for Mannux before. Joy!
Been sitting on an update post for a while, but it’s saturday, got some time, might as well stop losing once again!
Previously, Winter’s input system could use a keyboard, or a gamepad, but not both, which was annoying for testing. As well, because hacking around in a .cfg file is so 90’s, I wanted to make sure all the essential controls were configurable in game. To that end, I took the time to gut Winter’s input system and make it work with both types of controls at the same time and configure them. It took longer than I wanted but I’m happy with the results:
Of course, there will be labelling issues since I have no way to detect what type of controller is being used, so it will have to be very generic, but it seems to work for the most part.
I’ve also been doing some more map hacking. And sometimes, it’s the little things like when unlocking a new area that can be fun, with a little fade action:
Spent too much time actually working on my game that I forgot to actually update my gruedorf thread! The good news is that the ending is literally in sight - the game is content complete, the ending is done, all the story scenes are added, there have been a lot of gameplay and map and content tweaks - at this point it’s just doing some final polish, playtesting and bug fixes! With any luck, Winter will be done and out the door at https://hatchet2k4.itch.io/ before Christmas, or sooner!
With the release coming soon, I started “marketing” a little more on Twitter and it has definitely had a strong effect on my itch.io analytics! Definitely a good thing. As the original game was always free, I plan to release it with the “pay what you want” model. I don’t expect to make much, if anything at all from this, but even a few bucks would make the work I put into this worthwhile!
Stealing some of @jeffgamedev 's thunder, since work on Winter is dying down, he started working on getting Mannux into Godot! Starting with the tileset and map making process. Being able to drag chunks of tiles rather than place them one by one will certainly make everything much easier. Soon enough I will be able to join him on this and get some running and shooting once again!
So yeah, feeling like I’m in a good place gamedev-wise now. Next year will hopefully the year of Mannux devving, with any luck. Been wanting to do that since forever ago!
So, Winter has been released! Hooray! I’ve definitely learned a few things in this final stretch.
- The final 10% is never quite done. There are always more issues to be found and ideas to be had, but you have to draw the line somewhere.
- Releasing a game just before the holidays when you’re a family man is a bad idea. Got so busy with real life that I wasn’t able to give the game quite as much of a final polish as I was hoping.
- It’s always extremely enlightening watching someone else do a blind playthrough. Seeing the way they react or don’t react to certain things, finding brand new bugs you’ve never seen, and trying things you’d never even considered.
- As a result of the above, I’m already working on a 1.1 update patch and fixing a few more things that I probably should have caught the first time around. But so it goes.
- Word of mouth is definitely a good way to spread your game around, but definitely not the only way. Still, I’m pretty happy with the downloads (and even a few sales!) so far!
Thrasher actually might be helping to do a bit of a postgame/New Game+ update to the game as well. We’ll see how far we get.
If you haven’t checked it out yet, here’s your link: https://hatchet2k4.itch.io/winter
Pushing forward after the holidays, however, my main focus will be on Mannux. It has already seen a lot of growth in just the past few weeks. @jeffgamedev has put in a good amount of time in it as well, and already we have decent player physics and slopes, ability to shoot and kill enemies, a camera system with transitions between zones, enemies respawn when leaving/entering a zone, a prototype minimap, and more. It’s already pretty close to where the ika version was in terms of capability, though there’s definitely a lot more content to be added.
So apparently I have the attention span of a goldfish when it comes to working on just one game at a time it seems, haha. I started working on Fukyuuten once again! But Mannux did get a bit more work done on it though. Thrasher suggested looking at a Godot plugin called Dialogic, and it turns out it does a pretty nice job:
It has some nice text features and is very easy to lay out a conversation flow:
It can even call into other functions which let me set up a “cutscene” mode pretty easily.
As for Fukyuuten, since it is a spiritual successor to Winter and runs on more or less an enhanced version of that engine, it’s proving fairly easy to backport some of my features I added to Winter into it. I added in the damage captions, added features like cutting bushes for items and keys in dungeons, and have made a few fairly small but important bugfixes all around. Just like with Winter, I am keeping a spreadsheet of planned updates and their completion status, and already I’m about a third done:
Of course, what I have planned right now is still subject to grow and change, but I’m hoping this will not be quite the overhaul that I did for Winter in terms of brand new content. But I still plan to borrow the Automap system for the dungeon, and do some fairly extensive scenario changes to the story, adding in some planned content that had to get cut - possibly even including at least a couple new maps in a desert environment. That said, whether I call that just the end of a demo and keep it at that, or continue to build it into a more full game, will depend on feedback and if enough people think it will be worth doing.
I have done the work of creating a Tiled dungeon automap file in the same way I did for Winter. But since this dungeon has some… very confusing rooms that warp you around, I’m probably gonna change it up to be a little bit easier to navigate. So what you see here is likely not going to be this dungeon’s final form:
But yeah, been a fairly productive couple weeks in gamedev land. If you haven’t already seen, you can watch a little preview video of the first dungeon’s gameplay here.
The past week or so has been… tough due to some personal news that I don’t want to get into here. Nevertheless, taking some time to focus and do some gamedev work was good for me. I didn’t accomplish a whole lot, but I was able to get a few more things done. In no particular order:
Fixed an issue with cross fading between maps. For some reason the volume was not getting capped, so the volume of a song would just keep rising well past the allowed volume. The song wouldn’t get any louder, but it did cause issues when fading out from an extra high volume and end up with two songs playing until the first one finally reached an allowed volume range. I believe this also fixed some random, untraceable crashes as it has not crashed on me once since doing this.
I ported over the multiple input code from Winter, allowing use of both keyboard and gamepad at the same time. It’s definitely still not the most efficient way of doing it, as it assigns a separate control object for both gamepad and keyboard, but it’s done, it works, and I don’t really care.
I added little captions for when you enter certain areas, such as Anastasia’s House, or the town (which I have named “Haven” for now, but not sure if I will stick with it yet). I am dabbling with the idea of an additional town on another island to justify having an inn on each, and where they would have trade relations. We will see if I go ahead with this idea or not.
There was already an existing effect for scrolling an image across the screen used for clouds in the background and cloud shadows over top of the map. However this effect would draw shadows in the sky which bugged me. Fortunately I already had a script which could render the map to a canvas and save it to an image. I was able to modify that script to create a stencil canvas of anywhere that did not have any pixels colored on the map, and use it with a subtract blend to cut out cloud shadows where they should not be drawn. I think the final effect ended up pretty nice:
Next on my todo list are more scenario updates - changing the way the first cave works, in particular, as it’s quite annoying to pass through, and the conversation with Freidrich at the end is extremely lengthy and should be broken up. As well, I want to complete the previously incomplete and thus disabled Inventory screen. It “works” currently, but acts only as a list of items that you have collected (which is not much yet). I want to divide this up into various categories of items and make finding/purchasing equipment a bit more of a part of the game. There are some unused assets, as well as some I may borrow from Hyptosis and Corey. It should be interesting developing this part some more.
Of course, the game right now is hardly long enough to justify such changes, so as hinted above already I think I am going to lean into expanding the game to actually make it worth playing, and doing all these updates. It seems to be getting a lot of positive reception wherever I’ve shown it, so I think it could do “well” as a followup to Winter. Of course this would mean delaying working on Mannux a bit more, but given there are Godot 4 features I want to take advantage of before really starting to work on it in earnest, I think it will be worth the wait.
In terms of a bit more details, I definitely want to expand the first “green” island, as there is already a section you can only get to with the grapple item you find in the first dungeon. There is also a completely unused desert tileset that I want to take advantage of for a second island. And of course it wouldn’t be difficult to add in another color swapped dungeon or two, though designing them will be interesting. Fortunately the tileset used in Fukyuuten is a good deal easier to use than Winter’s, so I believe expanding the content won’t take too long, relatively speaking.
For a desert dungeon, a potential boss enemy is already being designed by my friend Adam (insomniacsoleil on Discord).
He would have several different attacks, but I’ll leave those as a surprise.
So um… Yeah. This has been quite the stretch of not posting and losing that I’ve finally determined to come to an end. This year unfortunately was not the greatest personally, though I won’t get into details here. Though I did start a new job after over 12 years in my old one. Still in a very similar space, but it has still been a lot new to learn and a nice change of pace.
I did start collaborating with Seth on a brawler game for the game jam. But unfortunately life still got too busy for me, and when I did have time to sit down in front of an editor, my brain was still all “nope” and not letting me be very effective. But we do have some ideas for a larger game to work on with that engine, and eventually I do plan to continue working on that.
For now though, whether it’s because it is spooky season or what, but I finally got inspired to start working on Final Eclipse once again. When working on the pygame port of it with Jeff, we ran into an odd rendering issue that was causing walls to not be displayed in the right places or at all, duplicated items on the ground, and other wierdness. This past week after a fresh look at the code I finally solved it. Turned out that there was an inner for loop using the variable i… with an outer for loop also using i. Lesson learned kids, always use proper variable names. With that issue resolved, the pygame port is pretty close to where the ika version was, though there are still a few more things to get working.
Just like I did with Winter and Fukyuuten, I’ve put together a Google sheet with todo items. It has always been satisfying crossing those items off, and it will come in handy with getting back into some momentum on this project. For now, I have been working on modernizing the interface to use widescreen, giving about 100 more pixels in width to work with. I’ve used this to add a bit more room for inventory, moved the equipment area to the left side (with more slots for boots and a helmet), the automap to its own corner, and movement buttons on the bottom right. I also added some additional context senstitive buttons so that it should be possible to play with mouse/touch screen only, though I’m not 100% on the placement of those yet.
This is still just a mockup (the sections are done in grey so that I can dynamically color them based on health) and is yet to be implemented in game. There will still be some work to be done so that mouse clicks register in the right locations, and I may want to rework the bottom PDA area as well at some point.
So yeah, that’s my current progress update for now. I do plan on working on Fukyuuten and Mannux again at some point of course, but I need to keep my focus on one project at a time. I can’t promise new updates weekly, but I will try to at least semi-consistently have something new!
So it’s been a few weeks, and luckily this time I actually do have some progress to report! The mockup from the above post has now been fully implemented. The movement buttons are clickable (if you’re crazy enough to play it that way), and in that bottom right multi-purpse section as well are sections for using keypads to open code-locked doors, and my personal favorite, lootable chests. With the convenience of rightclicking to auto-add to your inventory:
As for the map area that used to be in the bottom section, I may repurpose it to be a more general “wireframe” area map of whatever deck you are on, but this hasn’t yet been fully decided. Of course that area is still used for log entries/objectives, and stats as well. As a quality of life feature, you can also now use the mousewheel when reading logs!
There are still a couple features that need to be re-added to the pygame port, such as the air pressure system for hull breaches, and the “smooth” movement which transitions when walking between squares of the map. This will be an optional feature since not everyone prefers that look, though it does make more clear especially in videos which way the player is moving. Long term, one big feature to still add is saving and loading, which is a bit more complex than just saving player stats because the world is not static. But I have a few ideas on how to handle that.
All in all, it is already starting to feel less like a tech demo and more like an actual game. Hoping I can keep up the momentum!
Heh, I thought a few weeks was a bad delay for my last Gruedorf post, and here I am over 7 months later. Yet again the year started off crappy, due to getting laid off, then getting a job that ended up being far too stressful to maintain, and still on the job hunt now (though hopefully I will have good news on that front soon)! You would think with all that “free time” I would be able to get some good dev work done, but honestly I just wasn’t up for it. I did spend some time doing some online courses to help expand my dev skills and hopefully I will get picked up soon!
Fortunately in the past couple weeks I was able to start getting my mojo back. I started playing around in Unity, practicing making both 2D and 3D games. I was able to do it pretty quickly, and that brought my confidence and inspiration back. And so I started working on Final Eclipse again!
I actually had more updates since since my last Gruedorf post, namely adding in the smoothed movement that I had mentioned previously, adding an options menu to turn it on/off, and allowing for customizable controls. More recently, I added back in the air pressure system, so even the environment can kill you now if you open the wrong door unprepared! I also finally designed the outline of the ship the game takes place on. This will be the largest deck, which will give you a good idea of the scale of the game:
I designed it for 6 decks but messed up on the scaling for the height, so I might actually double this to 9 or 10 to better fit the scale I wanted, or I might just change the side profile to have fewer decks. With a scale of about 2x2 meters per tile, the ship is about 178 meters long, 142 meters wide, and 64 meters tall. It’s compared to the Enterprise here:
Finally, I added in a little hacking minigame, inspired by the bomb disposal levels of the Ultimate Stuntman on NES:
Essentially you need to make it from the start to the goal while getting rid of every tile, and each number represents how many times you must move through that tile to delete it. There are also obstacles such as arrows which force you to take a certain path. Shamelessy linking to a video on my Youtube channelto see it in action. It is easy to create puzzles for this, and I want to add even more mechanics, such as tiles that add to surrounding numbered tiles when moved onto, to make them more challenging.
Next up, I want to work on the wireframe automap and start designing the interiors of the decks. It should be interesting to finally start fleshing out the actual content of the game, the critical path and what events/items need to be collected, etc. I have a lot of ideas that I need to make concrete. And of course I still have the save/load system to implement.
Fingers crossed my next update will not be so long in coming!
Happy to report that progress on Final Eclipse has been fairly steady since the last update! I did end up sizing the ship up as the smaller scale was not letting me size the rooms quite how I want. And so, the ship is now 9 decks tall, about 268 meters long and 214 meters wide. I have almost fully drawn out the rooms and plans for most of the decks, though some of them still will need some more designing and fleshing out. But I am working on that process, slowly but surely:
I also added in a feature that I had actually partially implemented all the way back in the ika version, 45 degree angled walls. This takes advantage of my perspective image generation script and will definitely help make the world feel less square!
You can also notice some changes to the automap again. It has moved back to the central “PDA” section, and in its place at the bottom left is now an enemy scanner, much like the motion sensor in Aliens. This will be an item that you can use in your left hand (so cannot use with a two handed weapon equipped). I want to play more into the “two hands” system, with other ideas for the left hand possibly being grenades, an energy shield, other scanner types, and quick healing stims. Actually, technically that last one is already in the game too, but there is no left hand visual for items held there, yet.
I’ve also been working behind the scenes on story, character and scenario ideas, and what the player will need to do for the critical path. And my friend Adam is starting to help me with this aspect as well.
Finally, and most exciting - I have set up a Steamworks account and am in the midst of setting up a Steam page!
Still some work to be done obviously, and I’m going to need to record a trailer soon before I make it live. (Also, please disregard that Oct 2024 release date - it’s certainly a goal, but I doubt I’ll be able to quite make that date… but I’m going to try!) It will also be nice to finally participate in #wishlistwednesdays. As much as Twitter is a crapshow these days, it still is a great way to get visibility, at least for now. We’ll see how long that lasts!