Titled unicycle game - A Balanced Brew

Hey all, just want to show off a bit of the game I've started working on :smile:
It's just a game about riding a unicycle to your goal. It's still very much in the early days of development but I'm just excited about it :stuck_out_tongue: And I'm hoping to use this thread as a sort of dev log.
untitled-unicycle-game

All the art is still very much place holder, I plan to replace all of it ( even though I'm no artist ) and I want to get some sort of story to tie it all together.
There's only one level at the moment but if you want to give it a shot please do and let me know if you liked it!

path_follower.pdx.zip (105.0 KB)

9 Likes

I should also say, controls:
crank to pedal
left/right to lean
B to restart
A to pause ( you can stack up pause screens, just ignore this, it was a testing thing I forgot to take out :grimacing: )
B to unpause

In the start menu you can adjust the assist and lean values, if you do play it please let me know what values you find fun.

This looks super cool!

I think the accelerometer input would be a natural fit for controlling the lean left and right on the unicycle. You could also support both D-pad and accelerometer input that you can toggle via the system menu.
( I mentioned this on your Reddit post, but i thought I'd continue the conversation here).

It definitely has a bit of a QWOP feel to it with the controls. I think you could lean into this (har har) by having the facial expressions change so he looks more and more worried the more off-center he is.

It's looking awesome and I'm really excited to see how this shapes up!

1 Like

Spent a lot of time working on this this weekend, and it feels so good to be making games again! And the playdate SDK is a joy to use :slight_smile: So, what's new?

New art!

I've never considered myself to be a good artist, or even an artist for that matter. Which has always been a bit of a problem for me making games, always stuck in the "programmer art" style of basic shapes with smiley faces crudely drawn on them :sob:
But this is the playdate, I don't need to worry about pesky colours or how big to draw things. The playdate decided that for me. So I sat down with a coffee and "how to use aseprite" queued up on youtube and did my darnedest.

brew_1

Frankly I'm pretty happy with the results!

I ended up splitting the character into two sprites so I could animate them separately.
For the lower body I used a program called PixerOver which allows you to animate sprites using bones. The result still required a fair bit of cleaning up after but even with that the process was much quicker than anything I could do by hand, smoother too.

The upper body I hand animated in aseprite, there's 5 different animations depending on how far forwards or backwards he's leaning. Another benefit of doing it this way is I'm no longer rotating the entire sprite which has saved a fair bit of the cpu. Previously even on a simple level the cpu was regularly up at +90% :face_with_peeking_eye:

8 Likes

That looks really cool! The character is really neat.

1 Like

Hmm, how did you not rotate your entire sprite? I'm working on a game that uses rotations very heavily (jumping causes a random rotation, cranking changes the rotation), and I'm wondering how I should optimize it, given I don't have real hardware

Wow. This is looking amazing! I honestly cannot wait to play this. (I'll out myself as a real-life unicycler. Let me know if you need any play testing. :joy:)

Update: After noticing you had a pdx in your original post in this thread, I downloaded that version of the game and played it for a bit. Simply amazing. :star_struck: I did eventually "win", but only after setting lean force to 2.

It felt to me like there is some kind of accumulated force thing happening. I would expect the forward (or backward) force to actually be a factor of how far forward or backward the player is leaning. That didn't seem to be the case to me, but it was still very enjoyable, and I can't wait to try out future builds.

1 Like

I would love some playtesting!! I don't think it's quite ready for it yet but when it is I'll definitely be getting in contact
( I used to be a unicycler too )

1 Like

This looks super duper cool! Keep it up!

1 Like

Ow my head :frowning: after an infuriating week with an very frustrating and hard to diagnose bug which has entirely melted my brain, I have something new to show!

Level Editor!!!

This was a big one for me. Every game I've worked on it that past I've never put in any time to make the tooling and actually making the game easier, this has always meant that I've hard coded levels which made iterating and balancing levels painful and slow (which is probably a big reason why I rarely finish games). Now making levels is a game in itself :stuck_out_tongue:

level_editor

Part of creating the level editor was figuring out how to how to store levels, like I said, I've always just hard coded levels :grimacing:

The solution it probably obvious to most of you but it's a first for me, JSON! The levels are just saved a list of tile names and any extra info about the level, and that object is simply encoded and saved.
However loading JSON at the start of a level has a noticeable performance impact with dropping frames. I think in future I'm going to take a page out of the LDtk importers notebook and have levels encoded to lua files instead.

Tile effects!

Now riding over different tiles will have a noticeable effect on how you move.

  • you pedal slower uphill and faster downhill
  • muddy floors that bog you down
  • slippy floors that you zoom across

mud_and_slippy

looking for playtesters!

Still heaps to do but I think the game has enough stuff and is stable enough where I'd get some propper feedback! Let me know if you're interested!

3 Likes

Back again, got a few things to show off today, mostly small additions but I think the whole thing is really starting to come together :smile:

A TITLE!!

That's right, it's no longer an "untitled" unicycle game, it's now a "TITLED" unicycle game.

  • so what's the title then?

    • A Balanced Brew.
  • Huh? Why?

    • well, I didn't really have a good idea for a theme for this game, I could do circus but, even though I used to be a clown for a living, I don't really like the circus aesthetic :playdate_sick: So if I'm not doing a circus theme, who else would be riding a unicycle? Hipsters of course :playdate_cry_laugh: and what do hipsters like? coffee of course! (I say this with all love, I am a massive hipster, I love coffee, and I used to ride a unicycle, so it's a bit of a wonder why it took so long for me to get here :playdate_agh:)
      So this is the theme of the game, you're a hipster out for your morning unicycle ride to get a coffee.

Improved menus

gave my menus some love, now they slide in and out, a coffee bean marker, and a cute little coffee cup at the bottom.
menus
not perfect, I'm not sure if I'm going to keep the overlapping effect, and I'm getting this weird bug with the marker. I wanted it to go to the next selection with a little bit of overshoot but all I seem to seems to do is wiggle a tiny bit :playdate_ugh: it's ok for now but I should figure this out at some point.

Parallax background and more sprites

I created a utility class to handle the parallax because this is something I'll probably be using in other games too. It all ends up being just one sprite! A optimisation I made was to make the parallax scroll by steps of two pixels, this was to avoid the strobing effect with dithered sprites.
I posted the code over in this thread if you'd like to use it. link
I've also updated most of the in game sprites so the whole thing looks a lot nicer now I think!
(still gotta give the game over screens a lot of love)

game

game 2

8 Likes

It all looks great! You ARE an artist after all!

(Have you experimented with 2- or 3-pixel outlines? Single-pixel lines can get a bit lost on the actual hardware's tiny screen, especially in less-than-ideal lighting.)

1 Like

I've been a little worried that I wont be a good judge of what a fun challenge is, because at this point I've played a lot of it, I know all the in's and out's of how it works, and I know how I've intended it to be played. So for the last week or so my game has been the the hands of some playtesters and I've also taken it with me to work/game meet ups/lunches/just everywhere, shoving it into as many hands as I can. With a couple exceptions, the resounding results were:

THIS IS WAY TOO HARD!

I knew it was going to be a hard game but oh my, not like this :playdate_shocked:

What did I learn from the playtesting?

From watching people play and reading between the lines from the feedback from the online playtesters. There seemed to be an over reliance on "Lean" mechanic ( you could use left and right to nudge your balance back into place). The way I intended the game to be played was that you'd pedal back and forth to try to keep your wheel under your centre of gravity, only tapping left and right to help out in dire situations. Most people I watched play didn't do this, instead when they lost balance they would stop turning the crank entirely and hold left or right while planted until they got their balance back, this often meant they overshot and lost and if that didn't happen they'd end up very gingerly inching down the track while holding lean. This is really not the game play experience I was looking for.

How do I fix this?

Well if the issue is over reliance on the lean mechanic, why don't I remove it? This is a little easier said that done, but yeah, that what I did.

Before I go further, lets explain how the game currently work. I using verlet integration, often used for mesh/ragdoll simulations, example - Pikuma. I'm only using 2 nodes and 1 link, 1 node for the head and 1 for the wheel. I apply a constant gravity downwards to the head (red), and when you lean I apply a perpendicular force to the head (blue). Moving the crank moves the wheel.

This worked fine, I had a few know to tweak to try to try to balance, could lower gravity, adjust the lean force, the length of the link.
The resulting game felt a lot like trying to broom on your palm, which was fun if your brain made that connection, I think the issue was for a lot of people they didn't see that connection, and without that it felt really hard and unintuitive.

So I can just remove Leaning and call it a day, I need to replace it with something.

Auto-Lean

This was simple enough. If your balance was over a certain threshold, apply a lean force the same was I was previously. There are 3 different force levels applied depending on how far you're leaning but this was quite simple to add.

Pedal-Assist

Essentially, if you're leaning forwards, auto-lean will apply a force in the opposite direction to try to regain your balance, but if you're also pedalling forwards while leaning forwards you'll have a stronger force applied in the opposite direction to regain your balance faster.

Forward-Assist

With just auto-lean and pedal-assist it was definitely much easier to regain and maintain your balance, however, moving forwards was still very slow and difficult.
When riding an actual unicycle, to move forwards you need to move the wheel slightly behind you so your centre of gravity is slightly forwards, they when you pedal you're moving the wheel back under you while you're leaning forwards to keep your centre in front. It's this constant balancing act and that's what I wanted to replicate.
If you're leaning forwards when you pedal, there'll be a small force applied to the back for your head to keep you leaning forwards while you move forwards.

Damping

The last thing I needed was some damping for the verlet integration. My character ping-ponging between leaning all the way forwards and all the way back. Wasn't too hard, just multiply the acceleration applied by a factor slightly less than one.

With all this done, I think I have a pretty good feeling game, but I know I'm a terrible judge :playdate_agh: So back to the playtesters!

4 Likes

Loving how your game is progressing, and Iā€™d be happy to lend a hand at play testing. Please get in touch if interested.

1 Like