An open API service indexing awesome lists of open source software.

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

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