CliffracerX

Ludum Dare 47

I'm Probably In, Again

It happened again. I'm just straight-chillin' when suddenly one of my dev friends asks if I'm gonna be participating in the next LD and oh shoot it's less than two days away.

Barring any horrible disasters or being too busy with/sidetracked by other things, I plan to participate in the LD47 compo. I don't have any interesting backup plans if we get a bad theme, though, so it's possible I will be bailing out because the theme was a major nope - it happens, and I'll put the time to good use working on one of the other ten bajillion projects I've got in the works.

Toolset of choice

  • Still on XUbuntu 16.04 (Windows support remains optional :sunglasses:)
  • Unity 2018.2.???????? (the new versioning system still remains bullhonk, y'all)
  • VSCodium for writing code (version 1.33.1 from apt-get)
  • Blender (2.78, custom-rolled)
  • GIMP 2.8 (2.8.16, as provided by apt-get)
  • Audacity (2.12, as provided by apt-get)
  • Caustic 3 (running in a 32-bit wineprefix with WINE-5.8-staging)
  • itch.io & its butler toolchain for distribution

[amgery theme complaining noises]

"Stuck in a loop" was not one of the better themes of the lot. Luckily, it wasn't one of the worst themes I've faced (e.g, the losing theme You can't save them all, or LD38's A Small World), but it's certainly not ideal. Luckily, I do have a plan going forward - presuming I can get some of the fiddly maths worked out in a reasonable timeframe, I'll be making a game more or less about my constant loop of lost homes in NMS that've all been claimed by various generation resets, because woop that's definitely not an overzealous goal for 72 hours. A small galaxy fulla planets and procedural generation, with actual newtonian physics a-la Kerbal. Though no worlds will ever remain your home long enough to really enjoy on account of the random regeneration-wipes, you'll at least get to have some fun swooping about in actual orbits and the likes.

If getting that working does not happen within a reasonable amount of time, then I'll dump the idea and make a runner about being on a literal loop-de-loop or the likes that's slowly falling apart, because that'll be pretty cheap & easy, maybe even on the level of being doable within the remaining Compo time period.

Best of luck to all the rest of you who're gonna try and stick with the jam in spite of the bad theme. Know this: your struggles are valid, and you are not alone. Every jammer has been here before, and will be again - all you can do is push forwards, and failing that, put your jam time to good use working on another project that's meaningful to you. Even if you hate what you end up making, or simply cannot come up with an idea, don't let that stop you from being productive - I'm assuming my main goal won't actually be doable, but getting the maths working for double-precision floating origin support w/ Newtonian physics will be vastly helpful in one of my other projects, so if the final result is just a tech demo with a single motile planetary system of grey spheres, I'll consider that a personal victory even if it goes Unfinished on the LD site.

  • edit note: it was LD38 that was A Small World. there is unfortunately no good way of making a Hugely Unpopular President sequel with Stuck In a Loop, which is a shame

End-Of-Night Status Report

I said in my last post that if I could get the complicated maths working in a reasonable timeframe, I'd stick with an idea involving newtonian orbital physics and procedural world generation.

The reasonable timeframe was achieved and I subsequently dumped my original idea, a No Man's Sky-style game w/ procedural planetary systems where interplanetary travel would involve actual orbital maneuvering, orbits could be established in the first place, etc. I've been sitting on plans to make a sequel for my entry into the first-ever Extra Credits game jam, Astronaut Plus Skateboard, for basically since I put APS out in the first place.

I liked a lot of it, but one thing that irked me deeply was how badly it did larger planetary systems, and how utterly incapable it was of supporting actual rotating/orbiting bodies. The general lack of gameplay wasn't great either.

GIFs from the testing system showing off movement and a brief bit of zooming off into suborbital flight: APSemWalkSunrise.gif APS/emSuborbital.gif

Transiting planet in front of a sun, first most basic test of a procedural system: unknown.png

Now, truth be told, much of the underlying code I've been hacking away at in spurts for a couple months now, with some snippets that're over a year old at this point. This kind of project is way too complicated to learn & implement entirely within 72 hours, and if I do manage to get it to even a proper tech-demo stage come jam submission time I'm probably going to submit as Unfinished to err on the side of safety, since this is getting close to basically just being 72 hours of continued development on a game I've already made.

(Additional disclaimer: Astronaut model and some animations are placeholder/re-used art from the original Astronaut Plus Skateboard. Skybox is also placeholder, and was generated using the last pre-Steam release of SpaceEngine, hovering out in an arm of NGC 6503.)

All that said, I'm pretty happy with how things are going, even if it ends up being another LD where I come out smarter, but without a finished product or any user ratings.

LD47 Postmortem, sorta

When the theme was announced, I knew this was gonna be one of those jams. My initial idea for Stuck in a loop had been to make a simplified No Man's Sky clone with actual orbital physics and the likes, where the main loop you're stuck in is that of universal regeneration - at random, the entire system would regenerate its surfaces/biomes/etc completely, destroying & refunding anything you had built on planetary surfaces and shunting you back to a space station or the likes. It'd be solely for poking a disgruntled sort of fun at Hello Games and company for the constant universe-wipes, or more recently, mass fauna genocides, which have torn my homeworlds asunder or taken the parts that actually mattered from me more times than I care to count at this point.

Obviously, this was way overscoped, and I had a feeling it wouldn't be doable for the jam, but, it'd be a great excuse to take yet another whack at trying to get a system put together that'd allow for seamless flight and exploration through a massive, astronomically-scaled system, letting you smoothly land on orbiting/rotating objects & take off again with no jank, even being able to explore rotating planetary surfaces without issue. I've been trying to get such a system built & functional for years at this point, and early in 2020 I'd come close with a frame-of-reference system, but the maths for translating between a rotated reference frame & a global one was screwed up. I copied the most critical code over into a blank project and set to work trying to fix it - worst case I saw would be making little/no progress on the idea and dumping it to just make a runner set on a literal physical loop-de-loop or something the next day.

Six hours later, I was smoothly flying off the surface of the testing planet and landing on its moon without any hitches or jank, in spite of the planet being 12km wide and the moon being tens of kilometers away. No issues arose from the planet's rotation nor the moon's tidally-locked orbit. I celebrated briefly and went to bed, deciding to dump the depressing jabs-at-NMS idea in favor of just starting work on the sequel to my first Extra Credits Game Jam entry, Astronaut Plus Skateboard - sure, it probably wouldn't be even close to done in time for the jam, and its theme applicability would be almost nothing (stuck in orbit, for the most part - giant loops for user-built space parks are still a bit away), but it'd be satisfying as heck to finally make.

Day 2 ended with the Astronaut reimlemented and functioning smoothly, as well as the starts of procedurally generating the system using some algorithms I'd put together a while ago in a previous, failed attempt at the core engine. You spawned in orbit of a random body in the system, and could easily go visit others, or deorbit and go for a stroll/skate on its surface.

Day 3 saw procedural surfaces, proper stars (Brown Dwarves, specifically, albiet covering the full range of main sequence temperatures), and some basic surface decor.

As the jam wrapped on Day 4, gas giants were added, surfaces had been polished, more things could spawn, fuel and oxygen became a thing, music was implemented, and planets could have water and even grass if the atmosphere and temperature were within acceptable ranges. Shipping was a bit of a mess - it wasn't actually until an hour after Submission Hour ended that there were playable builds available for all platforms, thanks to unexpected game-breaking bugs in the menu and Unity crashing partway through the export process, but ultimately it shipped in a basic but playable form as more of a tech demo than anything else. Unfortunately there are still bugs and polish issues, but for the sake of jam honesty, since none of them are actually game breaking, I'm just going to leave it as it is whilst starting work on post-jam features and polish.

APS-4.png

Now for some notes

  • The Astronaut's base model, rig, and some animation were pulled over from the original Astronaut Plus Skateboard.
  • The basic hoverboarding code is also pulled over from the original Astronaut Plus Skateboard.
  • The core code for the frame-of-reference system was made before the jam, but wasn't even close to finished or functional since about 90% of the time any attempt to leave/enter a planetary surface would see you materialise on a random point elsewhere on it because maths are hard, and that's to speak nothing of velocity-matching and the likes
  • Ditto for the system generation - the basic algorithm for placing planets and determining which ones orbit what came from before the jam, but wasn't really polished, and had nothing for custom surfaces, atmospheres, etc
  • Skybox and lens flare assets courtesy of SpaceEngine, the former being a high-res cubemap generated from an arm of NGC 6503, the latter from somewhere in the game files and in temporary use until I can figure out a nicer way of showing distant planets and stars

Development Post-Mortem/Lessons Learned

Changing plans halfway through and more or less voiding the theme entirely is probably my biggest sin here, and the amount of polish/balance issues/etc present in the jam version are unfortunate, yet in spite of all that, I consider this one of my most successful Ludum Dares ever: I almost never walk away from the jam with something as compelling as APS2 is, and I honestly have no right to have made as much headway on it as I did given the 72 hour timeframe - a entire planetary-surface generation system that looks good to boot, improved controls and animation for the Astronaut, the hands-down best walk animation I've ever made in all 6 years I've been working with Unity, and enough balance and polish to ensure that almost every aspect of orbital manoeuvring feels swish, satisfying, and easily doable even without extensive timewarp or orbit planners a-la Kerbal Space Program.

That said, mistakes I plan to try and avoid the next time around:

  • Scope less! Scope less! Scope less!
    • Ah, the old game development curse: but what if we made that cool thing a thing
    • Almost every idea I had planned out for the finalist themes was complicated as heck.
    • The original idea for Stuck in a loop was the aforementioned NMS ripoff, Nomad would've been the same but without world regeneration, Day and Night/Feeding the Monster overcomplicated wave-based survival/tower-defense, Connections a Zachalike about building things using logic gates, etc
    • While these always mean I come out with something cool and compelling, the jam versions are usually still pretty buggy, unpolished, low on content, and generally could've used another weekend in the oven to really be their best.
    • One of these days I'll learn to underscope to hell and back, but that day was not October 2nd, 3rd, 4th, or 5th.
  • Sleep more!
    • Actually not a huge mistake this time around, as I managed a comparatively regular schedule on every single day of the jam, but still only averaged 6h/night, and definitely felt the brain-fog it caused.
    • Seriously, fellow jammers - get some friggin' sleep. Two or three hours less raw game development time in return for more sleep means the remaining time will be a lot more productive.
  • Beware of polish!
    • It is really, REALLY easy to fall into a loop of obsessively polishing things when you still have more important mechanics to add, bugs to fix, or content to create.
    • A not insignificant amount of time was spent doing nothing but polishing the world generation.
    • Arguably, this is okay - given the game's main draw is its large procedurally-generated star systems, ensuring they generate in a pleasing fashion is probably worth the timesink? But still, hard to say - could've polished the fuel/oxygen system more, added player customisation (a big part of the first game), some basic gameplay like harvesting crystals for fresh fuel/oxygen, or heck, started work on the tricks system and Awesomeness

Earthlike.png

Polishing work has continued since the jam has ended, though none of it's available publicly yet. Blue-hot stars are back, and with them a higher chance of seeing planets with oceans & plant life on the surface, among other tweaks.

All in all, happy with how this jam went, and gonna get back to playing/rating y'alls games now. Chuck a link in the comments if you want me to check out what you made!

Astronaut Plus Skateboard 2: post-jam development progress

I've been working on the game daily since Ludum Dare ended polishing things and upgrading the systems under the hood to work towards the next biggest challenge the game would need to overcome: functioning multiplayer, where everyone can interact with objects on planetary surfaces no matter where/what the host is doing.

AstronautsSunrise.gif

It took a couple days to make it work, but here we are. Though there are some bugs here and there, and finding eachother is incredibly tricky when you have entire planets to search (even just 3km in radius = ~113.1km^2 of surface area to explore, after all!), but it works well enough I was able to run a half-hour long playtest session with two of my friends. We built a giant ramp on top of a mountain that you could just about get into the deep-space reference frame just from jumping off of, and watched the sunrise from on top.

basebuilt.png

There are now ten buildable objects, and some very basic gameplay in the form of refueling/re-oxygenating by harvesting the various crystals on the planet, as well as gathering resources from those that don't have specific use-cases to construct the aforementioned buildable objects. You can customise your astronaut's colors, and those colors will be applied to whatever you construct. All of this works in multiplayer, no matter who's on what planet, nor when they connected to the server, and without bogging the game down with hundreds of network-update calls per frame as would happen if I just used standard UNet for all objects.

Earthlike.png

This beta build is not yet publicly available, but if you've played/rated the game and want to see it evolve, let me know in the comments and I'll chuck an Itch key your way in some form - this'll also be free access to the post-jam version when/if it eventually goes commercial.

Additionally, as with before, if you want me to play/rate something you've made, let me know in the comments and I'll gladly take a whack at it - my brain needs a day or two off from crunching out code!

Rating Response & Status Update

Not one of my better Ludum Dare scores at the end of the day, though it's more or less within averages for my entries (2-4 avg across all scores, usually with one score that game excels in - like Innovation for Senbir, or Humour for Hugely Unpopular President Simulator, which was incidentally the closest I came to the big 100 hall-of-fame in all of my years Daring to Ludum...Dare) - about 1500th average across all scores, with its best being Mood (1085) and Innovation (1371).

I believe this speaks to the fact that a lot more people are making games for Ludum Dare, and they're making better games. I'm content to yeet something out the door and work on it after the fact to make something good out of the prototype, and y'all are just out there kicking arse and putting out amazing & polished games in the span of a weekend. Rock on, jammers.

That being said, I also notice an odd disparity in ratings - for the most part every review left has been quite positive (especially w/rt to the mood, which brings me such joy to see - if other people are rejoicing at the spacey mood much the same as I am whenever I work on it, then this game was a success), and yet those comments only represent about half (12 comments vs. 22 reviews) of the total ratings I got. This maybe isn't surprising - it never feels good to rip someone else's game apart, especially when you know they went through all the same trials and tribulations of game jam development you did, and I would hazard a guess the lowest ratings are probably among those who didn't post a comment, either because it feels bad, or maybe because they just were too busy to write up constructive criticism & it fell off the schedule, as tends to happen in the hectic aftermath of a game jam.

2020-10-24_22.15.18.png

As for how things are going post-LD47, I got saving/loading implemented a few weeks ago, and of late, I've been starting to slog away at the difficult task of adding spaceships to the game - it's a whole new set of nightmarish difficulties and hacks being required.

  • Ships need to have the same seamless transition from ground to space/vice versa as players, as well as support for being anywhere in the system at any velocity.
  • They need to be simulatable server-side to let ships continue to work without a player behind the metaphorical wheel or when their pilot is logged out outright.
  • This means they need to work independent of the Unity physics system, as well as the active-visible frame of reference, to allow for ships to maintain consistent and accurate positions/velocities no matter how far out from the 0,0,0 point they are, and to ensure they can de-orbit/crash-land and whatnot consistently, even when the host is on another planet or flying through deep space.
  • They also need to have a pretty decent physics simulation in place that would allow for stuff like using offset RCS thrusters to turn the ship, maneuver it around, etc, as well as for how their handling will change as they burn up their fuel supplies and the likes.
  • All of this needs to work alone or with friends, and players need to be able to pilot ships seamlessly, and preferably with easy support for co-op flying if you add additional seats to it (e.g, one player is controlling main thrust and pitch/yaw/roll, another has maneuvering thrusters galore - this is really an engine feature for later use in another project where advanced co-op piloting would be beneficial for more than just the cool factor) spaceship.png

Thus far, the core physics stuff is semi-working. Translation to/from planetary surfaces is still pretty borked (velocity does not transfer correctly and you tend to get chucked off into deep space one way or another), and it does not work well when the active frame of reference for display is a rotated planet (though the issue may just be visual by the looks of things - which is fine, seeings as how you won't be seeing/flying a ship in deep space while on a planet :P), plus there's no interaction with player characters of yet. Progress is slow-going, in no small part thanks to motivational issues and the general mind-boggling complication of the task being made worse by odd and arbitrary bugs I'm having no luck with fixing.

2020-10-24_22.03.28.png

Such is the life of game development. Keep on keepin' on, jammers, and stay safe out there.