Skip to content

mikesouthron/JavaRogueLike

Repository files navigation

JavaRogueLike

Install

  • Download the zip file from Releases for your platform.
  • Extract the zip.
  • In bin/ double click on javarl/javarl.bat (depending on platform)
  • A command/shell window will appear and the game will launch.

Controls

  • Numpad keys to move, 8-way movement.
  • Shift + Direction = auto move.
  • v opens message log.
  • l enters look mode, where you can navigate a cursor and see things in your FoV.
  • i open inventory.
  • z zoomed out map.
  • Escape to menu.

Dev Details

Adapting the Python-libtcod tutorial here directly to Java as much as possible.

Using the code from AsciiPanel to drive the basic UI. Updated to use a custom JNI linkage to SDL2 for all rendering and event handling

No other external libraries.

Some of the algorithms are ported directly from the libtcod C code.

Ported from bresenham_c.c

I converted the use of TCOD_bresenham_data_t into the Bresenham class itself holding it's own state.

I replicate the int* __restrict xCur, int* __restrict yCur reference params with a Position object that gets updated every step.

Ported from fov_restrictive.c

This code is almost an exact replica with some type name changes.

I have left in place the ability to switch to a different FoV algorithm, but not sure if I will bother implementing them.

Notes

* Hold Tab to highlight items/monsters in FoV, with bg color that maps to key on right hand menu

  • AI
    • Scout AI
    • Pack (Leader + Follower)
    • Defender (assigned a room to defend)
    • Strong Roamer
  • Demon generator rooms
  • Stats STR, AGI, CON, INT
  • Start at 1-1-1-1
  • Each dungeon level increase gains you 2 AP (can this be modified based on things happening on level?)
  • Different levels of stats allow picking up of certain Abilities
    • e.g 3 STR - Power - Slide damage window up
    • e.g 3 AGI + 2 INT - Perception - 'See' montsers beyond FoV
  • Default max of 4 abilities
  • Stamina - Attacks take stamina (heavier weapon = more stamina) - Moving costs stamina - base restore rate - reduced when in combat?
  • Mana - similar to stamina - using spells costs mana - base restore reduced when using spell?
  • Magic is from spellbooks, higher level spell books need more INT
  • Melee weapons heavier weapons need more strength.
  • Ranged same as melee, accuracy is based on AGI
  • Damage is a range based on weapon base * str modifier
  • Crits % based chance, calculated based on AGI * Base crit rate of weapon
    • Crit damage is multiplier of max weapon damage (multiplier is different for different weapons)
  • No consumables? All magic through spellbook equip and ability trees, Interesting choice for fantasy based RL! No health or status effecting items then!
  • Enemy stats, equipment and abilities are based on DLVL (don't need tons of "enemy types" just stronger versions).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published