Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(1 edit)

Update 7: Oh noes!

Hey! I didn't finish on time. I unfortunately ran into some packaging issues with UE 4.25 today, and I spent most of the hour before jam close trying to package the game and deal with import problems and toolchain differences. Between you and me, it's actually been years since I've last packaged UE4 for distribution!


I had a moment where I contemplated publishing a placeholder entry and upload the binaries after submitting the game, but that didn't feel like the right thing to do. In general, the game is also still in a very unfinished state, much less finished than I'd hoped -- the only difference between last update and now is that I built a simple adaptive soundscape (authored using FMOD) into the demo level.

I like how this project is turning out way more than I anticipated, so I plan to continue working on it a bit alongside my other projects during my spare time. If anyone still wants to somehow link to this game or reference it from the planned site that's mentioned in the submission form, I'm cool with whatever. After all, it's all about the journey, and you were right here with me all the way! :)

In summery, I had a big productivity hit during most of this week, but today was especially messy for a few reasons (most of which is really my fault, not the software I'm using):

  1. Packaging problems -- I should have been testing production builds all along, rather than leaving it as an unknown until the last hour.
  2. The biggest blunder was definitely setting up FMOD on the last day -- I should've done it on day one. I know better than this. I wanted to bang out a quick soundscape, but it turned out that the FMOD team hadn't updated the UE4 plugin to support UE 4.25, which totally makes sense since it's been out for only ~1 month and we're living in strange times. I decided that adaptive audio was important enough to bite my lip and spend a couple of hours patching the FMOD plugin and properly configure the sound bank imports. There was some big *sigh* energy today as I pummeled through missing headers and random segfault after random segfault. I love FMOD, so I'm still stoked that I have it working fine now.
  3. miro.com had downtime today, and that's where all my project notes are stored! I tried to remember and rewrite the plan I had for today in another document, which took a bit of time.

Retrospective

Here's the rolling retro I've been keeping throughout this jam:

What went right?

  • Some of my best learning happens during game jams:
    • I Managed to learn a lot of important things about UE4:
      • You can easily expose public fields for scene authoring in the editor by using EditAnywhere. I can't believe this fact eluded me for more than 3 years of off and on UE4 use! (Well, more off than on I guess)
      • UE4's cinematic tools surprised me in terms of how pleasant they are to use! For example, the Cine Camera seems to have pretty accurate and predictable real-world camera emulation parameters like f-stop (to adjust aperture size on a hyperbolic curve) and the distance of the focus plane. No need to manually adjust FOV or blur/distance curves to get realistic looking camera behavior. For example, when I turned down the f-stop and pulled the focus plane close, I was pleasantly surprised to see an accurate-looking bokeh effect, where splotches of color formed that appeared to take the shape of an actual aperture stop for angles with higher light volume, rather than all color just being evenly blurred together. You can even adjust the shape by changing the number of blades on the aperture stop mechanism using the "Diaphragm Blade Count" parameter. I'm obsessed with this virtual camera.
      • Authoring the track using a USplineComponent offered many conveniences that saved time.
  • Blender is always a win. Thanks to muscle memory built over the years, I can usually model, map UVs, texture, and rig what I need pretty quickly. I am a bit slower with animating than I'd like to be, though!
  • UE4's C++ hot reloading went above and beyond the call of duty. Last time I used UE4, I pretty much had to restart the editor every time I made any constructor changes. It looks like they somehow managed to fix most of the state desync problems and crashes.

What went wrong?

  • Blender's workflow of converting Actions to NLA Action tracks is funky and finicky. I made a lot of mistakes here and had to backtrack and waste time. It'll serve me in the future to look into the UI's behavior more deeply and develop a consistent workflow around it.
  • Importing Blender-authored 3D assets into UE4 was difficult to get right, and I ran into several compounding UE4 bugs that caught me off guard and caused some lost work. For example, I was trying to work around a bug where not all of the animations were getting imported from the FBX, but UE4's editor crashed a couple of times when I tried to move a fresh import of the animation assets to another directory, which seemed to leave some of the assets in a corrupt state on disk and no longer visible in-editor. I have some ideas about what happened here that I won't get into, but I eventually just cleared everything out and re-imported things.
  • UE4's toolchain out of the box doesn't have some modern C++ features enabled that I like, such as designated initializers for structs.
  • I ended up only getting to audio on the last day, and I had to patch problems in the FMOD UE 4.24 plugin in order to get it building against 4.25.
  • Packaging for production during the last hour did not go smoothly. :o

Takeaways

  • Working with UE4 blew my expectations out of the water this time around, and I absolutely will be reaching for it again in the near future. Over the past couple of years, I've been working off and on reducing my friction with UE4. In addition to optimizing my hardware for much faster build iteration, I can say that I wholly endorse Rider for Unreal Engine -- it's hands down the best IDE experience I've had with UE4 by a long shot. With other IDEs, I've sometimes had to resort to shutting off intellisense due to the extreme performance issues and my low tolerance for IDE lag. Not so with Rider, it's fast and accurate. In all, there has never been a better time to try starting a UE4 project than today. I'm so glad I decided to work with it.
  • Participating in this jam was a perfect opportunity to use new tools and improve my existing workflows with more tools. For example, I had some good organizational gains with Blender in terms of animation authoring. I've learned more during this jam than I have during any other for sure!
  • Keeping a dev log is always a fun thing for me. I hope you enjoyed it too, thanks for checking it out!
  • I like birbs -- if there's another birbjam in the future and you remember me, reach out and let me know, I might miss it!

Feel free to reach out if you have any thoughts, questions, comments. Oh and see you soon in another jam. :)

Places you can find me: YouTube, Twitter (@algebrandon), GitHub (bdero)

Brandon