doukutsu-rs/README.md

88 lines
3.8 KiB
Markdown
Raw Normal View History

2020-08-18 16:46:07 +00:00
# doukutsu-rs
2020-08-20 18:31:47 +00:00
A re-implementation of Cave Story (Doukutsu Monogatari) engine written in [Rust](https://www.rust-lang.org/), aiming for behavior accuracy and cleaner code.
2020-08-18 16:46:07 +00:00
Later plans might involve turning it into a fully-featured modding tool with live debugging and stuff.
**The project is still in a very early state and nowhere near being playable. Expect lots of breaking changes and bugs**
2020-08-19 00:55:21 +00:00
[Join the Discord server](https://discord.gg/fbRsNNB)
2020-08-18 16:52:28 +00:00
2020-08-18 16:46:07 +00:00
#### Data files
doukutsu-rs project does not re-distribute any copyrighted files.
2020-08-19 00:58:15 +00:00
The engine should work fine with [CSE2-Enhanced](https://github.com/Clownacy/CSE2) or [NXEngine(-evo)](https://github.com/nxengine/nxengine-evo) modified freeware data files and [Cave Story+](https://www.nicalis.com/games/cavestory+) (Nicalis commercial release, loading is supported but note we're not going to reverse engineer it or support it's features) data files.
2020-08-18 16:46:07 +00:00
2020-08-28 20:16:27 +00:00
Vanilla Cave Story does not work yet because some important data files are embedded inside executable and we don't have an extractor yet.
##### Where to get them?
**Freeware**
- https://github.com/Clownacy/CSE2/archive/enhanced.zip - copy `game_english/data` from archive to the runtime directory (place you run the executable from, usually project root)
- https://github.com/nxengine/nxengine-evo/releases/download/v2.6.4/NXEngine-v2.6.4-Win32.zip - copy `NXEngine-evo-2.6.4-xxx/data` from the archive to runtime directory
**Cave Story+**
- PC release - Copy `data` folder from installation directory ([guide for Steam](https://steamcommunity.com/sharedfiles/filedetails/?id=760447682)) to the runtime directory.
2020-09-03 12:28:34 +00:00
- Switch release - While some support is implemented, hacking consoles and extracting cartridge content is a kind of gray legal area so I will leave it to you...
2020-08-28 20:16:27 +00:00
2020-08-18 16:46:07 +00:00
#### Roadmap
2020-08-27 05:10:54 +00:00
- [ ] Rendering
- [x] Backdrops
- [x] Tilemap
- [x] Player and it's animations
- [x] Carets
- [ ] Bullets
- [ ] NPCs
2020-08-29 07:44:44 +00:00
- [x] Text
2020-08-27 05:10:54 +00:00
- [ ] HUD
2020-08-18 16:46:07 +00:00
- [ ] Text scripts (TSC)
2020-08-27 05:10:54 +00:00
- [x] Initial implementation
- [x] Execution of basic subset of opcodes and game conversations
2020-08-28 20:16:27 +00:00
- [ ] Shift-JIS encoding
2020-08-27 05:10:54 +00:00
- [ ] Full implementation
2020-09-03 12:28:34 +00:00
- [ ] Audio
- [x] Organya BGM playback
- [x] Text script bindings
- [ ] CS+ style .ogg BGM playback
- [ ] PixTone SFX
2020-08-27 05:10:54 +00:00
- [ ] NPCs/entities
- [ ] Weapons
2020-08-18 16:46:07 +00:00
- [ ] Modding enhancements and built-in tools
2020-08-27 05:10:54 +00:00
- [x] Debugger
- [ ] Level editor
- [ ] Texture auto-reload mode for spriters
- [ ] Optional enhanced graphics effects
*(tbd)*
2020-08-18 16:46:07 +00:00
2020-08-26 01:25:52 +00:00
#### Mandatory screenshots
2020-08-26 01:21:46 +00:00
2020-08-26 01:25:52 +00:00
**Freeware data files:**
![freeware](https://i.imgur.com/oCduSsy.png)
**Cave Story+ data files:**
![cs+](https://i.imgur.com/8qbfkeb.png)
2020-08-26 01:21:46 +00:00
2020-08-18 16:46:07 +00:00
#### why rust, it's a hipster language lol
The project is a result of me wanting to build something in a new programming language for memes.
2020-08-20 18:31:47 +00:00
I had an idea of writing my own CS engine long time before and I would've very likely picked C++17/20 and SDL2, but after
2020-08-18 16:46:07 +00:00
all I've picked Rust instead because it seemed quite interesting for me.
Would 90% of end-users running this thing care about the programming language software was written in? After all who tf cares if the performance is the same (and maybe a slightly better), but you also get a lot of various benefits?
#### Credits
- Studio Pixel for Cave Story
- [Cave Story Tribute Site](https://cavestory.org) - for LOTS of useful resources related to the game.
2020-08-31 20:31:59 +00:00
- [Clownacy for CSE2](https://github.com/Clownacy/CSE2) - some game logic reference / mutual help in reverse engineering bitfields and other shit.
2020-08-18 16:46:07 +00:00
- [CSMC](https://discord.gg/xRsWpz6) - a helpful Cave Story modding community
2020-08-31 20:31:59 +00:00
- [LunarLambda](https://gitdab.com/LunarLambda/organism) - for reimplementing Organya in Rust, which is used by us as `.org` playback engine.
2020-08-26 01:21:46 +00:00
- [NXEngine](https://github.com/nxengine/nxengine-evo) - an another OSS rewrite of Cave Story engine I took some inspiration from.