It's a game based on mechanics of NecroDancer. Right now I'm developing the logic for it. I've done an attempt at this previously, but the project had gone out of hand rather quickly. You may find the old code in older versions of the repo.
The idea with this project isn't to replicate the original Crypt of the Necrodancer, but to create a scalable open-source game based on the same mechanics, so that it could be easily extended by community mods. If you do not know what this 'Necrodancer' game is, I highly recommend you check it out. It is awesome.
See docs! https://antonc9018.github.io/Dungeon-Hopper-Docs/
The game pretty much follows the MVVM (Model - View - ViewModel) pattern. This basically means that the game logic is totally decoupled from all the drawing done to the screen. The Model
is represented by the game logic. All stuff explained in docs thus far is pure logic. The View
and ViewModel
are still in their infancy and so are not mentioned in the documents. The system currently just displays and 'teleports' the sprites around, placing them at the necessary location on the screen. You may find the assets (just single pngs, no sprite sheets) in the /assets
folder of the repo.
The existence of this sort of paradigm allows us to easily switch the underlying engine if needed, as long as it supports lua as its scripting language.
As the graphics improve over time, its API will be documented as well.
Let the weird imports not throw you off!
There is a special syntax for requires:
- the
@
turns intologic.
- a
.
at the front turns intomodules.MOD_NAME.
, whereMOD_NAME
is the name of the mod folder you're working with.
For example, require '@items.item'
will in fact do require 'logic.items.item'
.
Among dependencies, there is the Luaoop class library by ImagicTheCat(classes are used extensively throughout the project) and inspect by kikito (dev dependency, useful for debugging). See their github repos for docs.
Vec and Emitter are also used but are not documented in these docs (have not been thus far). Chains are both used extensively and documented here.
List of things already implemented:
- Chains and Chain Templates (Implemented sorting based on priority)
- High-level Grid
- General action execution algorithm for player and non-player entities
- Attacking and Attackable decorators
- Sequences
- Weapon target selection logic
List of important things not implemented:
- Basic graphics +
- Pushing +
- Moving +
- Sequential decorator +
- Ticking +
- HP +
- Basic Controls +
List of less significant things not implemented:
- Digging, walls +
- Traps +
- Special tiles +
- Explosions +
- Environment Objects +
- Status effects +
- Projectiles +
- Items +
- Better controls
- Better renderer
List of dreams:
- World generation +
- Enemy pools +
- Shopping
- Secrets
- Music
- Lobby
- Menu