[Gruedorf] HatchetSoft updates Thread
This week’s post is quite different than last week’s… I didn’t actually get a whole lot of work done on Winter this week. I did start up a new map which should be interesting when complete, involving a chasm and broken bridges.
Most of the rest of my dev time has been on the Verge Archive project, which you can check out here: https://andyfriesen.com/verge-archive/
For those who don’t know, andy made wasm versions of v1 and v2 that allow you to play games made in those engines in your browser. Shameless plug, the original version of Mannux is working in it:
Some games need a little bit of finessing or recompiling to get working, but overall it works surprisingly well! Much of this week has been adding to the library of available games, but not all are working 100% just yet. I’ll probably be spending a bit more time getting some games added before I get back to working on Winter, just because I feel this is an important project to preserve the early days of Verge games!
Any games you remember fondly that you want to see added? Would be happy to add them!
So as is standard for me when I get in dev moods, I’ve been flying from one project to the next. Tinkered a bit with the Verge Archive again this week, getting The Guy Who Mugged Me to work a little bit better, and added my old Dungeon Master clone. Unfortunately it freezes after getting into the game and won’t work correctly without mouse support… but here’s a sorta pretty screenshot!
This actually segues into something else I’m working on: I joined an itch.io Gamejam for dungeon crawlers ( https://itch.io/jam/dcjam2021 ) which may or may not have been a silly thing to do… but it started at the end of March and lasts a week, so I still got some time to prepare. As such, I’ve actually been spending a bit of this week trying to get the demon of 3D off of my back and started tinkering with it in Godot again. Turns out 3D isn’t so hard:
This is just playing around with a Godot 3D tutorial of course, but with a bit of luck I can build on it and get the framework of a dungeon crawler engine going. Wish me luck!
Devtime was scarce for me this week, but I’m still quite happy with what I was able to get done. All my dev time went to Godot and the dungeon crawler framework I wanted to build. Within a few hours of total dev time I have a proper crawler with smooth movement and turning, and enemies that face you no matter which direction you look at then:
There’s a lot more to be done to turn this into a proper game though. I have some movement quirks to smooth out, making proper enemy objects, etc. But Godot is definitely making it all pretty easy; Gridmaps are a godsend for making 3d scenes in the same way you would with a traditional 2d map editor. Though actually placing tiles in the Gridmap in the UI is a huge pain, it would be trivial to load maps from Tiled and generate the geometry from those, and that’s one of the next features I want to add. After that, we’ll see about the Diablo style inventory system!
Hope to have something nice to show for next week.
So unfortunately this week kinda sucked in terms of getting any real dev time… but I was at least able to get a little bit of work done on the 3D Gridder engine. I did more or less complete loading maps from Tiled as I was hoping, and now it loads both the walls and enemy objects from a Tiled file. I also added a bit more framework around getting entities working, and now they animate. Excuse the poor gif quality!
Next part is working on getting them to respect which direction you are facing them in order to display the correct frames, for front/sides or back.
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!