Throughout the last year I’ve been spending a bit of time here and there making a Spelunky clone in Unity using the sprites from the original game.
Spelunky, the remake, is one of my favorite games, and even though I’ve always felt the original game feels janky by comparison I just love the original sprites and seeing as the entire GameMaker source code is available with sprites and everything I thought this would be a fun project to take on.
I have no intention of recreating the remake or the original game, and instead my goal is to do what I want where I want to while using the games as guides where appropriate. So far I’ve been using the remake as a guide for movement and feel while at the same time trying to improve it where I see fit. A concrete example of an area where I felt I could improve the game was ledge grabbing. In both the original game and the remake you automatically grab a ledge if you are falling next to it which is extremely undesirable in certain situations, like when trying to fall past a tiki trap and instead you grab onto it and get speared. At the moment in my version you need to move towards the ledge to grab it. I also have fully analog movement on controller just to see how that feels with regards to precise movement. Movement in general is more slow paced as I feel both the remake, and especially the original game, have very twitchy movement.
I will share my progress in this thread and I’m also hoping people will aid me in making this project as good as it can be.
The entire project is available on github:
https://github.com/oyvind-stromsvik/spelunky
You’re free to do whatever you want with it with one exception. The sprites are the original sprites and whatever restrictions the original license imposes on them still applies here. Everything else I’ve made from scratch so feel free to use it in any capacity. I’d love it if people helped out with issues and pull requests as well. Later on I’ll see if I can keep things updated with compiled releases as well for easier play testing.
I wanted to start this thread and share my progress a lot sooner, but I wanted confirmation from Derek Yu or Mossmouth before I did just to be sure what I was doing with the sprites was okay, but I’ve been unable to get in contact with them so I finally just decided to proceed under the assumption that this is fine. I’ve made sure to put all the sprites in their own folder with my homemade license file in it: https://github.com/oyvind-stromsvik/spelunky/blob/master/Assets/Sprites/LICENSE.txt
As stated in that license file the reason I haven’t included the original license is because it applies to everything while I’m only using the sprites, everything else is made by me from scratch. Feel free to enlighten me if you feel my approach here is faulty.
Anyway, here’s what the game looks like at the moment:
Project goals
My goal with this project for the time being is to create a solid 2D character controller while also creating a sandbox like Spelunky experience. I want players to be able to freely set the size of the levels, the amount of monsters, loot etc. to tailor their experience as they wish. I’ll also try to recreate as much as I can from the original game mainly because the sprites are so nice and it would be a shame not to use them, and recreating things from the original can also serve as very focused tasks to take on when I struggle with the motivation for other stuff.
My ultimate goal is to improve my skill and knowledge in creating high quality code and Unity projects while also creating a polished game experience. My biggest issue in Unity so far has been that I feel my projects become unwieldy the moment the scale of them reaches a certain point. I’ve learned quite a bit since last I worked on this project so I’m hoping I can put some of of that knowledge into effect going forward. With that I mean how to structure the project, how to structure the code, name spaces, state machines, how to write maintainable code etc.
Controls
The controls at the moment are WASD for movement, left shift for sprinting, space for jumping, up for ropes and right arrow for bombs. I know these are unorthodox platformer controls on PC, but as a FPS player primarily this felt more natural to me and I felt it better emulated the normal controller layouts as well. There’s also controller support, Xbox 360 controllers at least, but I’ll make sure the controls are rebindable etc. in the future. On the Xbox 360 controller I think the controls are the default Spelunky remake controls.
References
For the time being my character controller is based on this tutorial series by Sebastian Lague. Even though it was made for Unity 5 I still haven’t been able to find a better 2D character controller for Unity:
Articles I used as reference when converting my character controller to use state machines (which I’m still in the progress of doing):
Here you’ll find everything you want from the original game including a playable executable and the GameMaker source code:
The original Spelunky thread on TIGSource (a fun and interesting read):
Informative and interactive website showcasing the level generation in the original Spelunky:
http://tinysubversions.com/spelunkyGen/
A version of the original game playable directly in the browser:
https://tinysubversions.com/game/spelunky/
An improved version of the original game:
My github repository:
https://github.com/oyvind-stromsvik/spelunky