SyRec
About
Take SyRec the plucky little robot and navigate puzzles of logic, timing and physics to advance to the next level.
It should save your progress, but this is my first time implementing game saving in Unity so please do let me know if there are any problems.
Controls
Right/left - move right or left
Up - jump
Down - activate switch or terminal
r - restart level
q - quit to menu
Credits
Design - Seph (that's me)
https://cosephgames.itch.io/
Art - 16x16 robot tileset by 0x72
https://0x72.itch.io/16x16-robot-tileset
Sound - UI 8 bit retro by HoneyPhonic
https://honeyphonic.itch.io/ui-8-bit-retro
Font - TripFive by PixelMush
https://assetstore.unity.com/packages/2d/fonts/pixel-font-tripfive-64734
Why this project?After my last project snowballed into something huge, I wanted to do a project of limited scope that I could finish in a short time frame. This took me about two weeks of solid work (excluding a break in the middle working on something else).
To keep my scope limited I set the following constraints:
- One tile set
- One sound set
- 10 levels
- Each level fits in one screen
I made a small concession in early development as I realised there was one more thing I needed:
- One font
I chose this specific project in this scope because I found the 16x16 robot tileset by 0x72 and thought it had a ton of potential, and I was interested in testing myself with building a puzzle game for a change.
Learning points
There are a lot of new things I did for this project.
- 2D physics puzzles - getting the 2D physics to work well, especially given the size constraints, took some C# trickery in a couple of places. Let me know if you can tell where!
- Puzzle game level design - making them a challenge even given the level size constraints was tough a few times, hopefully there's enough there to cause some head scratching a few times. I ended up doing a lot of sketching, planning and even puzzling myself on how to make them work and lay out the challenges I wanted to include.
- Shader graphs - Something completely new to me in this project and I only implemented right at the end while polishing everything up. This was surprisingly easy to get to grips with (thanks to a tutorial from Brackeys) and I'm pleased to have this in my Unity toolbox.
- Math! There was quite a lot of geometry and trigonometry involved here, such as in playing with making the physics work the way I needed it to and making enemies move. Bots in SyRec are not on scripted patrol routes - they are dynamic objects entirely at the mercy of the physics engine and held back only by wall, floor and drop detection methods.
- Lighting effects - I made use of these a lot in SyRec and it's my first time doing so. I intended for this to run in browser but the WebGL performance is terrible, so this is a lesson learned in the cost of lighting effects. I need to study them in more depth and optimise lighting use more in future.
- Bump mapping - Though I don't think it's very obvious here (and likely is a cause of extra cost in the lighting) I experimented with adding bump mapping to the tile set.
- Bloom - I added this for some of the effects, which is very pretty but this is another factor in the difficulty running as WebGL.
Future features
- This is a demo game, if I were to complete this I'd expand it to 30, 50 or even 100 levels. I'd also expand on the story a bit between the master AI (which incidentally, has a brain the size of a planet) and the plucky SyRec bot.
- There are a load more unused bots in the tileset that I want to implement, and I have ideas for each of them to make new tricky and surprising challenges to face. Some would do completely unexpected new things, some might even be friendly!
- Optimised lighting effects for better performance in browser.
Possible bugs
There is a possible issue on level 4 where one of the buttons very rarely gets out of sync with the door it activates (with the door being closed when the button is down instead of open). I've seen this a couple of times but have not been able to replicate it and can't think of any code reason that it should happen. If this happens to you please let me know the circumstances so I can hunt the bug! Remember you can restart the level with "r".