7DRL 2022 devlog

Make games! Discuss those games here.

Moderators: Bob the Hamster, marionline, SDHawk

TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

7DRL 2022 devlog

Post by TMC »

(As yet untitled)

A roguelike where you go up instead of down. Jump your Mech all the way into SPACE! Take huge bounds and propel yourself further by blasting mercenary mechs from midair, or get knocked off a girder to your doom --- all in a traditional turn-based tile-based roguelike!

An entry for the 2022 7DRL game jam, in collaboration with Seilburg. Stay tuned for daily blog entries!

Day Zero
(Crossposted to itch.io)

​We're back! Seilburg and I attempt our 4th 7DRL! This time it's a "traditional" roguelike but with a big twist: it's a platformer rather than top down. You pilot a mech climbing a tower that stretches into space --- in fact, a space elevator!

We're officially starting at Saturday 11pm UTC. That means we started 30 minutes ago. That means 30 minutes were wasted creating the game page and writing this. We did also debate the tile/sprite size to use, the usual quandary that plagues our every project. (32x40 is the most perfect sprite size.)

We'll manage to reuse quite a bit of code from last year's 7DRL, Portlligat​ (meaning we're once again using Godot). Which, ugh, still is not released (and we never got around to write post-mortems). I'm very optimistic that we will release this one thanks to hewing much closer to the RL formula which is so suitable for game jams, and having a small design doc.
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

I don't think Seilburg (aka anaximander) will be posting in this thread directly, but I'll link to his devlog entries.

Day 0 - Off we go!
By Seilburg, on itch.io
User avatar
SwordPlay
Chemical Slime
Posts: 966
Joined: Sun Jan 22, 2017 9:32 am
Location: London, England
Contact:

Re: 7DRL 2022 devlog

Post by SwordPlay »

weirdly enough, i was considering a platforming roguelike this year too.

always great to see these entries. keep it up!
"Imagination. Life is your creation."
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 1: Stealing a march
(Crossposted)

Spent most of the day on porting over code from Portlligat, while removing or modifying parts and doing some minor refactoring. The refactoring ate a lot of time (including debating it!) for little benefit.

I wrote some placeholder mapgen using the old mapgen framework, but I feel that the framework isn't quite unsuitable to generating platforms and structure (it's for an infinite outdoor map), so I expect to throw away a lot of the mapgen.

This is the first time I'm doing a 7DRL where I have a significant codebase to build on. Although we copied code from Slumber (our 2020 7DRL) to Portlligat, Slumber it wasn't even tile-based, and most of what did get copied was a mess that needed rewriting.

I feel kind of strange because I wrote (as opposed to deleting) almost no code today, so it feels like I accomplished little, although we actually have heaps of basics in place:

* movement
* mapgen
* FoV and camera
* a turn queue
* untested classes for objects, items, entities, the player and NPCs, sentence generation ...
* plus the graphics Seilburg drew (not used yet)

...err, however, movement is still topdown...
Attachments
day1.png
day1.png (3.26 KiB) Viewed 1527 times
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 1 - Familiar ground(s)
By Seilburg
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 2 - Agony
By Seilburg


Day 2 - Dejection
(Crossposted)
​Imagine your mech, moving smoothly from tile to tile as each of its six components makes the motions for the walk animation. It reaches the next tile and switches to Idle. There, you've seen my Day 2 progress. Sometimes pictures aren't worth many words. I won't bother to post a recording because I can't take credit for drawing the mech or animating it anyway.

Had less free time, and I admit procrastination. Tried to figure out how animating simultaneous movements and actions are going to work with the existing turn-queue. Looks like it'll be possible to dodge projectiles by moving out of the way, not because we planned that because the projectile will fly to the wrong spot.

Spent the most time learning Godot's animation system. Sure, it can supposedly do anything, but at a cost of staggering complexity. I won't be doing it that way in the OHRRPGCE. Apparently the idiomatic way to switch between Left and Right variants of an animation is to create an AnimationTree node next to your AnimationPlayer, give it an AnmationNodeStateMachine or whatever, add a BlendSpace1D in the tree root, place left and right Animations at ends of this 1D continuum, and call `sprite.get_node("AnimationTree").set("parameters/Walk/blend_position", direction)`. That's bad enough but then Seilburg decided to use this contraption to transition between Jump and Land animations. I thought that's what AnimationNodeStateMachineTransitions traversed with AnimationNodeStateMachinePlayback.travel() were for. Finally at the end of the day he admitted maybe it was a bad idea and it would be good if we could do without AnimationTree.

Ambitious plans for day 3:
  • Falling over edges
  • Jumping, including target selection and splitting it over multiple turns
  • Preliminary attacks, so you have something to do while midair, to test out simultaneous actions and animations and modifying jump trajectory in mid-air
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 3 - Getting a head (or several)
By Seilburg

Day 3 - Plummeting to ground
Crossposted

This is better called a physics roguelike rather than a platformer roguelike, I now realise. Platformers can have trivial physics, but most are more than that, particularly if you can do things mid-air, which is the design we went for.

Squeezing smooth physics-based animation of movements into a turn-based game is messy. And although it's tile-based, I've decided that while you're in the air waiting for a turn you could be between tiles for the purpose of display and physics, though you're at a definite tile for all other purposes. An upcoming headache is what to do if you jump to the same tile as someone else -- can't believe I didn't plan that out thinking it could simply be disallowed. Maybe you pile up on the same tile, or end up standing on them, or you get knocked apart (but what if it cascades!)

I implemented walking off a platform, and accidentally got jumping for free: you can still walk upwards (or diagonally), but immediately fall down again. That counts as achieving my day 3 goals, right?!

Had quite a number fewer free hours available than I expected due to beekeeping, etc, and had some trouble getting consistency between the realtime and turn-based position. And more time wasted with animations as well. But I've laid lots of groundwork, should get jumping working on day 4. Will try to get most of the physics and animation done.

The gif recording also shows that changing facing direction while midair costs a turn.

Also it wasn't until I actually had this working that I realise it looks really wrong to be frozen midair waiting for a command! There's no indication of motion. I'll add arcs showing the paths that all moving objects are on.

(This writeup is super late!)
Attachments
day3.gif
day3.gif (446.19 KiB) Viewed 1487 times
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 4 - Hitting rock bottom
(Crossposted)

Day 4 was lost to those twin spectres: bugs and animations. I didn't accomplish much else. Created walk/fall/land animations myself. Now walking off an edge actually works and looks correct. Also got rid of those nasty BlendSpace1Ds and other gunk and learnt to like Godot's AnimationTree.

About 1.5 days behind where I wanted to be. The bugfixes were endless, and had some really stupid causes. Got bit three times by trying to add a float to a variable declared as int and it silently rounding. Why's there no warning, they have warnings for the stupidest things! Not that I read the warnings or errors, there are too many. Others were caused by forgetting important and details of reused code -- not enough comments.

Also wasted a lot of time trying to record a gif for the previous devlog, and it took an hour+ to fix the GUI to not draw at 2x scale like the map. Threw away my first attempt using a Viewport, then found a hacky solution (put the map in a CanvasLayer set to "follow viewport"), but I just realised there was a trivial solution: don't set the window to 2x scale, instead set the camera to 2x zoom. Would have taken 20 seconds. I don't even feel despair, only emptiness.
day4.gif
day4.gif (319.41 KiB) Viewed 1473 times
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 4 - Hello Humidumfunemcaeruleum
By Seilburg

Guess I can link his images:

Image

Image
User avatar
Bob the Hamster
Lord of the Slimes
Posts: 7658
Joined: Tue Oct 16, 2007 2:34 pm
Location: Hamster Republic (Ontario Enclave)
Contact:

Re: 7DRL 2022 devlog

Post by Bob the Hamster »

I am enjoying reading these :)
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Day 5.1 - Leaping and stumbling
(Crossposted)
day5.gif
day5.gif (899.27 KiB) Viewed 1456 times
Finally, jumping. (Currently picks a jump randomly.) Added it quite quickly right at the beginning of day 6, hence a late writeup. The first thing to go well for a while, after another disastrous day.

Day 5 was spent on computing all the available jumps, with collision checking, and more mapgen foundation.

It's been five days and I'm still only halfway through the things I said on day 2 I planned to get done on day 3! Charitably that's half the pace, actually more like 1/4 pace. We still expect to have something playable though.

So the tiles are 48x48 pixels. We thought that was pretty big, so we decided to actually use 24x24 "subtiles" for graphics and collisions, so that we could have thin platforms so that you could get an extra half a tile of jump height. Writing collision checking with subtiles became an ordeal. Wish I'd just ported the wallmap collision checking I wrote for the OHRRPGCE, and in fact I did partially port it when I got fed up. Why didn't we just use Godot's collision system with TileMaps? Not after our experience doing so with Slumber! And it's better to have control.

I first tried finding the jump velocity to reach every reachable tile using physics derivations, but that doesn't work because you have a choice of how high to jump and need to avoid obstacles. Finally I just tried a couple hundred trajectories and see where they end up. A simple solution that took way too long to settle on.
day5.png
day5.png (15.88 KiB) Viewed 1456 times
The circles show where you get a turn in midair. Not sure whether to do something about those a hair away from landing.

Oh, and drawing those curves, another big time sink.

Then I updated all the map code for subtiles and stripped out most of the rest the old mapgen code we don't need. Writing from scratch would have been faster.

At last I finished and updated the placeholder mapgen code to use subtiles. Immediately decided writing mapgen for subtiles is a huge pain, so decided not to use them. Luckilyy I used constants, it was easy to disable them in all the code I wrote...
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Uh oh!

Day 6 - A game with no name
Crossposted


Field of view, but nothing lying in wait.
Monster generation but not monster placement.
Weapon targeting but not firing.
A physics system but no projectiles.
Falling, but no falling damage.
Enemy AI which just wanders left to right.
Inventory management, but no items to collect.
Stats that do nothing.
Original music tracks that won't be finished and used.
Sentence generation but a nonfunctional message box and nothing to say.
Real tiles, but still using placeholders.
Map gen code that's half-finished, with a templating system without real templates.
A design doc we never referred to.
A game with no name.

But! The jumping interface is totally done! (Well, except the option to intentionally jump into walls.)

I think I've posted enough .gifs of jumping and falling, so I won't.

Day 6 started so well (see Day 6.1 log entry), implementing jumping, but then most of the rest of the day was spent fixing jump glitches such as jarring misalignments when landing.

But after the day there is night! Finally added the jumping interface, polished it for an hour, and then did some work on mapgen. Ugh. It's a mess of code I laboriously salvaged from Portlligat, placeholder map gen I wrote, and real mapgen Seilburg started on. A lot of total effort for little to show. I added template placement and created some templates, although I didn't have final tilesets to use.

Oh, and that CanvasLayer hack from a few days ago to scale the screen? I had to revert it and redo it properly using camera zoom, because it was breaking the camera in strange ways.
day6.png
day6.png (38.28 KiB) Viewed 1446 times
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Release

We released a game! In the final hours a name was selected, Battletier Ascend.

https://voxelate.itch.io/battletier-ascend

Haven't written a Day 7 devlog yet (Seilburg's still on day 4!) but here's this.

It's a success in the sense that it's released, playable, complete, and actually IMO surprisingly fun, for being so rushed and buggy. The balance depends greatly on what weapon you start with and how many enemies jump off the map. Replayability!
It's, umm, kind of not a success in the sense of strictly meeting the deadline. We went 0.3 days over (and Seilburg was out cold during most of that). I hope it doesn't get disqualified too quickly :D

Posting it so late here because of major problems with broken exports and crash bugs, had to take it down.
screen1.png
screen1.png (203.31 KiB) Viewed 1396 times
User avatar
Bob the Hamster
Lord of the Slimes
Posts: 7658
Joined: Tue Oct 16, 2007 2:34 pm
Location: Hamster Republic (Ontario Enclave)
Contact:

Re: 7DRL 2022 devlog

Post by Bob the Hamster »

I finally got a chance to play this tonight. It was fun! The turn-based platforming works well, and the jumping is really satisfying.

The combat seemed easy to me. I got 4 weapons pretty quick, and except for occasionally having to wait for cooldowns, I usually made short work of enemies. I couldn't tell how much they were damaging me. I didn't see my own HP anywhere. I think some of the windows at the bpttom scaled wrong for me. I could not read the most recent line in the log even in full screen.

Eventually I got to a place where I simply couldn't make the next jump.

So in spite of a few flaws, I had fun, and y'all should be proud of doing this in 7 days.
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Re: 7DRL 2022 devlog

Post by TMC »

Glad you liked it!

I think you got pretty unlucky to get stuck. I didn't really think it was possible. It's often possible to make an impossible jump by using the P Panic jump button, which was a small part of the reason for adding it.

The HP is normallly displayed in the bottom-left corner, as seen in the screenshots. The default window size is 1280x980 and at resolutions below this something is likely to be cut off because the HUD resizing is badly behaved. I... never tested. You were likely playing on a laptop? But neither of us properly understands how positioning and sizing of Godot "Control" nodes (which are for UI elements) actually works! (Especially not me, I haven't attempted the documentation.) Slices are very straightforward in comparison. I still don't even know how x,y coordinates in the editor correspond to x,y coordinates on the screen.

It was probably too easy. I erred on the side of making it too easy, which is oft ecommended for games that are likely to be only be played once. But actually it might be better for a RL to err on the side of making it too hard, so that it's at least a challenge!
However, how easy it is depends hugely on your luck in finding weapons. We need to reduce the randomness, because it makes it impossible to balance.
Post Reply