https://github.com/nearhuscarl/castlevania
A remake of Castlevania NES (Block 01) written in C++ and directx 9
https://github.com/nearhuscarl/castlevania
2d-game castlevania cpp directx platformer remake
Last synced: about 1 month ago
JSON representation
A remake of Castlevania NES (Block 01) written in C++ and directx 9
- Host: GitHub
- URL: https://github.com/nearhuscarl/castlevania
- Owner: NearHuscarl
- Created: 2018-09-16T16:27:48.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-10-15T12:56:17.000Z (over 5 years ago)
- Last Synced: 2025-05-07T21:46:22.755Z (about 1 month ago)
- Topics: 2d-game, castlevania, cpp, directx, platformer, remake
- Language: C++
- Homepage:
- Size: 11.9 MB
- Stars: 34
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
A remake of Castlevania NES (Block 01) written in C++ and directx 9## Download
[Castlevania x86 executable zip file](https://github.com/NearHuscarl/Castlevania/releases)
## Controls
| Key | Command |
|-----------------------------|----------------------|
| ← | Walk left |
| → | Walk right |
| ↑ | Go upstairs |
| ↓ | Go downstairs / Duck |
| a | Attack |
| s | Jump |
| ↑ + a | Use subweapon |
| Esc | Toggle devtool |### Devtool Control
#### Keyboard
| Key | Command |
|---------------------|--------------------------------|
| tab | Set category to PLAYER |
| q | Set category to ENEMY |
| w | Set category to CONTAINER |
| e | Set category to POWERUP |
| r | Set category to WEAPON |
| t | Set category to EFFECT |
| g | Toggle drawing grid info |
| [ | Previous map |
| ] | Next map |
| 1 | Move player to `Checkpoint` |
| 2 | Move player to `Checkpoint_02` |
| 3 | Move player to `Checkpoint_03` |
| 4 | Move player to `Checkpoint_04` |
| 5 | Move player to `Checkpoint_05` |
| 6 | Move player to `Checkpoint_06` |
| 8 | Add 200 hearts to player |
| 9 | Set player health to 1 hp |
| 0 | Set player health to full |
| Numpad - | Kill player |
| Numpad + | Add 1 live to player |
| Numpad 1 | Open menu |
| Numpad 2 | Open gameplay scene |
| Numpad 3 | Open gameover screen |
| ~ | Toggle god mode for player |#### Mouse
| Mouse button | Command |
|------------------------|--------------------------------------|
| Scroll up | Select next item |
| Scroll down | Select previous item |
| Left click | Spawn current item at mouse position |
| Right click | Toggle item facing |## Development Environment
- Visual Studio 2017
- C++17
- [Tiled] - A general purpose tile map editor for all tile-based games### Libraries
- [DirectX 9 SDK]
- [pugixml] - Light-weight, simple and fast XML parser for C++
- [freetype] - Font rendering library
- [fmt] - Modern formatting library
- [mappy] - Used to create tiledset from the complete map ([Instruction](TUTORIALS.md))[sample project]: https://github.com/dungdna2000/gamedev-intro-tutorials/
## References
- [Castlevania_Block_1]
- [Castlevania_Inventory]
- [Block_1 Walkthrough]
- [Item_Data]
- [Back to the Basics! Essentials of Modern C++ Style]
- [Smart pointers need careful programmers]
- [UIT-SE102-Game-Project ]
- [Game Programming Patterns]
- [Swept AABB collision detection]
- [Evolve Your Heirachy]
- [Monogame Framework]
- [Monogame Samples]
- [CatapaultWars]
- [NetRumble]
- [RolePlayingGame][native event]: https://msdn.microsoft.com/en-us/library/ee2k0a7d.aspx
[Tiled]: https://www.mapeditor.org/[Castlevania_Block_1]: http://castlevania.wikia.com/wiki/Castlevania_Block_1
[Castlevania_Inventory]: http://castlevania.wikia.com/wiki/Castlevania_Inventory
[Block_1 Walkthrough]: http://castlevania.wikia.com/wiki/Walkthrough:Castlevania/Block_1
[Item_Data]: http://castlevania.wikia.com/wiki/Vampire_Killer_(whip)/Item_Data[back to the basics! essentials of modern c++ style]: https://github.com/CppCon/CppCon2014/blob/master/Presentations/Back%20to%20the%20Basics!%20Essentials%20of%20Modern%20C%2B%2B%20Style/Back%20to%20the%20Basics!%20Essentials%20of%20Modern%20C%2B%2B%20Style%20-%20Herb%20Sutter%20-%20CppCon%202014.pdf
[smart pointers need careful programmers]: https://yatb.giacomodrago.com/en/post/11/cpp11-smart-pointers-need-careful-programmers.html
[uit-se102-game-project ]: https://github.com/danhph/UIT-SE102-Game-Project
[game programming patterns]: http://gameprogrammingpatterns.com/contents.html
[Swept AABB collision detection]: https://luuthevinh.me/2016/11/xet-va-xu-ly-va-cham-bang-swept-aabb
[evolve your heirachy]: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
[monogame framework]: https://github.com/MonoGame/MonoGame
[monogame samples]: https://github.com/CartBlanche/MonoGame-Samples
[catapaultwars]: https://github.com/CartBlanche/MonoGame-Samples/tree/master/CatapaultWars
[netrumble]: https://github.com/CartBlanche/MonoGame-Samples/tree/master/NetRumble
[roleplayinggame]: https://github.com/CartBlanche/MonoGame-Samples/tree/master/RolePlayingGame
[directx 9 sdk]: https://www.microsoft.com/en-us/download/details.aspx?id=6812
[pugixml]: https://github.com/zeux/pugixml/
[freetype]: https://github.com/ubawurinna/freetype-windows-binaries
[fmt]: https://github.com/fmtlib/fmt
[mappy]: http://www.tilemap.co.uk/mappy.php
[create smart pointer from raw pointer]: https://stackoverflow.com/questions/4665266/creating-shared-ptr-from-raw-pointer
[seperate animation and physical bounding box]: http://community.monogame.net/t/examples-of-good-adaptive-code-for-animated-sprites/9569