Spelunky® remake for the NintendoDS.
To-do list as for now
- ✔ Implement shopkeeper logics and randomly spawned shops
- ✔ Implement damsel
- ✔ Implement caveman
- ✔ Implement skeleton
- ✔ Implement arrow trap
- ✔ Fix rope logics - if thrown, when it touches bottom of some tile above it or it reaches its maximum travel distance of 8 tiles up, then it should expand to the bottom. Now it's the opposite - it expands as it travels upwards.
- ✔ Implement cape and jetpack
- 🗙 Putting project on Travis
- ✔ Implement 4 layers system - top one for the console and HUD, bottom one for tilemap and the rest for other sprites
- 🗙 Tune-up the level generator; make it more random; add random events like snake well
- 🗙 Implement music using streaming from filesystem - I elaborated a bit on this on my blog: https://dbeef.wordpress.com/2018/05/24/some-words-on-developing-spelunkyds/
- 🗙 Pausing
- 🗙 Jars dropping loot
- 🗙 Ghost when spending too much time on level
- 🗙 Shake screen when dropping a bomb
- 🗙 Add github link to the main menu's copyrights sprite - so people would find the current version even if it was downloaded from some other source
- 🗙 Attempt to make levels a bit bigger (current size is 512x512, what I can probably make is 1024x512 or 512x1024, though not sure of that)
Obviously I omit things like implement Olmec or implement lava city - let's finish cave level first.
- 🗙 Though overall randomness of the generator is improved it sometimes makes some ugly structures, to be fixed later
- 🗙 I messed up a bit with collision detection
- 🗙 Arrow trap is triggered even if there's a tile (or tiles) between some moving object and the trap
- 🗙 Once thrown chest can't be opened
- ✔ Sometimes there's a level where there are spikes just hanging in air
- 🗙 Sometimes you can loose your items (shotgun, pistol) when changing levels
- 🗙 UI bugs - you can throw rope / drop bomb in scores screen
- 🗙 Damage system appears to be broken in terms of shopkeeper (you can't throw arrows, rocks, jars, etc on him)
- ✔ There's a bug when carrying damsel while sprinting through spikes
- 🗙 There's a bug when jumping on more than one NPC (snake, bat, etc) at the same time
- 🗙 Displaying loot in level-transition screen
- 🗙 Shopkeeper is quite dumb, easy to steal
- 🗙 Bullets can collide with jetpack, so it can work as a bulletproof vest
- 🗙 Blood drops / bullets can trigger arrow trap
- 🗙 Game tends to crash after some time of playing (at least on my vanilla DS)
1) Download devkitPro for your platform from their official website: https://devkitpro.org/wiki/Getting_Started
2) Set up a few environment variables, as shown in their tutorial
3) cd to the spelunky-ds directory and type 'make'
For running on a PC I preffer an emulator called Desmume. type 'desmume spelunky.nds' for running.
For running on an NDS I use 'R4i-3DS-RTS-WiFi' (oh boy) card, but it's probably going to work on any other card. Just make sure, you have NDS program called 'DSiMenu++', which helps running homebrew. Installation instructions: https://gbatemp.net/threads/ds-i-3ds-dsimenu-ds-i-menu-replacement.472200/
Tools I use
- GNU Make
- libnds - as included with devkitPro's toolchain https://devkitpro.org/
- mappy - https://tilemap.co.uk/mappy.php
- desmume emulator
- R4 card for testing on a real Nintendo
- gimp, for converting to 256 color (8bit) indexed bmp/png
- a real Spelunky code for inspiration ofcourse, distributed by Derek Yu on this address: http://www.derekyu.com/games/spelunky_1_1_src.zip
- Spelunky assets, I take them from the Spelunky Community Update Project because there's no need for installing Game Maker: https://github.com/tyrovc/SpelunkyCommunityUpdateProject
- CLion for editing
Full license text can be accessed under this link:https://github.com/dbeef/spelunky-ds/blob/master/LICENSE
Briefly, as for my code, I distribute it under GNU General Public License, as for Spelunky game assets, I use them under Spelunky® User License v1.1b, also, libnds and tools for building .nds files are provided by devkitARM; devkitARM is constructed from and contains components licensed under GPL, BSD, zlib, LGPL & MPL licenses. libnds is zlib licensed.
NintendoDS is a trademark of Nintendo and is used purely for descriptive purposes. This game is not affiliated with Nintendo.
I will accept every help with running this project, feel free to catch one or more of the todo's.
I found following materials very helpful: Links
- A great, great manual which introduced me to NDS programming: https://patater.com/files/projects/manual/manual.html
- A great video series about Spelunky level generator https://www.youtube.com/watch?v=ouh7EZ5Qh9g
- This online demonstration for Spelunky level generator http://tinysubversions.com/spelunkyGen/
- This blog, in particular this entry about alpha blending: http://www.liranuna.com/nds-blending-demo/
- libnds documentation https://libnds.devkitpro.org
- devkitPro forum https://devkitpro.org
- this blog, that post in particular: https://www.coranac.com/tonc/text/regbg.htm
- memory access calculator: https://mtheall.com/vram.html
- this post: https://gamedev.stackexchange.com/questions/61065/using-ndslib-how-to-configure-video-modes-to-both-print-text-and-draw-bitmaps-o