Ever squeezed 1000 oranges for a single glass of orange juice?


That's the mistake I just made on the most recent update to TurtleRun, kind of...

But first things first, a wee announcement that I'm really excited about.

The Steam page and Demo will be coming soon!

I'm planning to release the demo in the game's current state - 1.5.0-a, providing I don't encounter anymore bugs or issues needing resolved. This will give a good feel for what the game is all about in terms of core mechanics and vibe, but allow for the remaining zones and levels to be added in the background ahead of the full release, while hopefully gaining some wishlists in the meantime. I'll make another post with the link and more information as soon as that's up, super exciting times!

So, onto the v1.5.0-a updates - Customisable Controls are here.

As the title suggests, this week has been a lot of work, for potentially not that much return, let me explain. As well as a couple of bug fixes, I was heart-set on finally implementing the final core feature which will allow me to now focus on zone and level development while having something solid to demo.

Customisable controls are something I've had in mind for the game since Day 1. Ever since the days of Halo where I discovered the joys of "bumper jumper", pressing A to jump just doesn't feel right to me anymore.

Couple this with the fact that a lot of people who have tried out the game wanted the option to use arrow keys instead of WASD for movement and you've got yourself a quest.

I decided that rather than implementing an already existing library for such a feature, I'd reinvent the wheel give it a go myself. Mainly because I didn't want to go back through the controls system I'd created and try to configure a library to replace them, I thought it would be "easier" and give me more experience if I implemented it myself.

I could not have imagined the scope of this task prior to starting.

I kicked off the mission on April 24th and after just completing it last night (May 1st), it was the longest I'd spent on a single task since the project started, by more than double.

I realised about 15 hours into planning and programming, after many attempts to implement the feature, that it might be worth just cutting my losses and using a library, but stubbornness prevailed.

I had the naive developer mindset that every problem has a solution and if I just code enough and try enough different things, I'll figure it out.

While true (no pun intended, developers), I could've saved myself a lot of time by just implementing a library and moving on. However, I don't think I would have the immense feeling of satisfaction that I gained from having figured out a way to implement it myself. I learned a lot about data structures in Game Maker and even had to write my own function for deep copying DS lists, fun right?

It felt like every time I took a step forward, I had to take two back.

If you're short on time or have deadlines to meet, it's probably wise not to follow the path I've taken. Though I'm happy that I have something re-usable in future projects, and while I'm sure I haven't done things the most optimal way, I've got a definite sense of pride for having overcome the challenge.

A few of the roadblocks I encountered along the way were caveats like:

  • Not all actions are configurable (i.e. movement when using a controller)
  • Different input devices have different configurable actions and different amounts of configurable actions
  • I had to have an option to revert to default controls as well as reverting to the configuration state that was present when the user opened the menu (exiting without saving changes)
  • Creating these temporary lists of e.g. "ControlsThisSession" were not deep copies of the original default controls - meaning that if they were edited, the default list of controls was also edited
  • json_stringify'ing a DS list does not maintain the data with in the nested structures

And a few more I'm sure.

I spent the last hour or two of each evening in a state of being stuck, but the following day would almost immediately overcome the issue I was stuck on, definitely something to keep in mind. Constantly hammering away does not seem to produce anywhere near the results of taking a break and coming back with a fresh head.

Every time I was hard-stuck for more than an hour, I was plagued with the thoughts of "you could've used a library for this", "99% of players will never touch this feature", "think of all the other cool and fun stuff you could be working on for the game", but I stuck with it and after about 35 hours of grinding, achieved what I was hoping for.

Overall I've gained a much better understanding of the code base and have picked up knowledge that will stick with me along the journey. But yeah, don't do what I did unless you're a glutton for punishment.



A Call for Testing

Throughout this rather convoluted and complex development process for the custom controls, it's probable that I've missed some caveat and potentially game-breaking bugs/issues. If you'd be so kind as to play around with the customised controls and let me know if you encounter any issues, it would really help out. I've been play-testing and everything seems to be working fine, but players will always think of something weird and wonderful to do that I haven't considered. Your feedback is beyond valuable to me.


1.5.0-a Changelist

New Content

  • Controls are now customisable

Bug Fixes

  • Fixed an issue where the player's ghost would automatically pick up collectables while flying back to the checkpoint during respawn
  • Fixed an issue where the underlying death counter was not resetting each level, meaning the re-attempt at playing cards after 5 boss deaths was happening early due to dying in previous levels
  • Fixed an issue where boss text could be skipped, punishing players time-wise for reading it, tried keeping it skip-able and pausing the timer but this didn't feel good
  • Fixed an issue where checkpoints could be activated at the slightest touch, meaning that some failed jumps could result in checkpoint activation unfairly

Many thanks,

-Cappiche

Files

TurtleRun.zip 111 MB
Version 1.5.0-a May 02, 2024

Get TurtleRun

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.