SDLPoP is a great project that still gives me many hours of joy.
Some time ago I discovered the Nim programming language and have been privately using it since about the 1.0 release regularly for different purposes. While looking for a project to deepen my understanding of the language and what it offers the idea of rewriting SDLPoP somehow entered my mind and stayed. As Nim transpiles to C and has a great SDL2 wrapper I thought why not give it a try?
So nimPoP was born.
Since then I have learned a lot about not only Nim, but also SDL2 and deepened my C knowledge. As Nim does different runtime checks I also discovered some small errors in SDLPoP and could contribute some fixes.
This is a side project for me, mainly for fun and educational reasons.
Current status
The recording/replay and screenshot features are currently not implemented. I will add them when the base is stable enough. My focus is currently on fixing the remaining bugs.
The basic structure of the C source code has been mirrored in Nim by now. The game is playable, but there are still some bugs atop the ones from SDLPoP. The major issues are currently:
- The audio is only working when using the command line option when starting nimPoP. Otherwise the game crashes upon loading a level.
Code: Select all
stdsnd
- Enemies can't follow the Prince into another room
- The sprites for enemies aren't displayed correctly
How to give nimPoP a try?
Linux binaries are offered on the release page. They were compiled on Debian using the development version of Nim. Therefore you don't need to modify the SDLPoP.ini file. However given the different Linux flavours I can not guarantee they will work on all distributions.
If you want to compile nimPoP from source, here is a step by step guide:
- Make sure Nim is installed properly. For this please refer to the official installation instructions. If you are using Windows, please make sure to run the finish.exe to install an accompanying C compiler for Nim. Also make sure to adjust the PATH variable according to the instructions given there.
- run the following two commands:
Code: Select all
nimble refresh nimble install https://gitea.com/BarrOff/nimPoP.git
- nimPoP should now be installed in the users "nimble/bin" folder. If you followed the installation instructions for Nim, this should be in your PATH.
- Change to the directory of your SDLPoP directory
- When not using the current development version of Nim, there is a small change to the SDLPoP.ini file, located in the game data folder, because of this bug in the Nim standard library. The file ends with 16 section names of the pattern \[Level x\], where x is a number between 0 and 15. You need to remove the spaces between 'Level' and 'x' for the program to start correctly.
- you should now be able to start the program by running the command
Code: Select all
nimPoP stdsnd
Feedback is welcome!
Credit
I want to thank the following people, without them nimPoP wouldn't have been possible: