[TypeScript] Transformation Arena - Looking for Code Review and Collaboration

Penumbra

Active Member
Feb 25, 2016
32
13
I'm working on a top down RPG game with a focus on detailed combat like Dwarf Fortress adventure mode, but with lewd elements.
This thread's mostly here for feedback, especially from experienced game devs and typescript devs. Since the code base is still very fresh, I can refactor pretty easily.
Let me know if you're interested in reviewing the code base or collaborating. Eventually I'll make the gitlab repo public.

The current design is that your created character advances through arena/dungeon stages and along the way engage in combat,
transform through engagements/items and have these transformations actually matter in gameplay mechanics.
Interactions will be entirely body part driven, so the actions available to you will be very different if your arm transformed into a tentacle, for example.
The main selling point is that each transformation has mechanical and visual consequences (rendering the avatar using my dynamic avatar drawer)
e.g. increasing strength will make your punches hit more, but also make you physically bulkier and impact your appeal (depending on opponents' preferences).

Combat is currently designed around your stamina (per entity) and vitality (per body part). Damaging the vitality of a body part will decrease its effectiveness and eventually break it beyond repair.
It's lethal if certain body parts gets destroyed (head or torso). An alternative path is to drain their stamina, at the exhaustion of which they stop being hostile and become incapacitated.
Max stamina resets upon long rest (clear the stage) but decreases with certain events, such as being brought to an orgasm. So one play style will be to enter a grapple with the opponent and bring them to orgasms without receiving too many yourself (will depend on appeal and other perks). Most systems only have sex as an after combat bonus - it should be part of the gameplay!
Different body parts will allow different sex options and statistics such as lip size will have mechanical impacts.

The engine is built from scratch partly as a learning experience and partly because I didn't find any suitable frameworks - library usage like rot.js is fine though.
It's real time but paused whenever you're not taking an action and so can be played like a turn based game. The game will be light on plot to allow development to focus mostly on the combat system and engine. Future projects can extend it to have an open world/story/whatever.

Other reasons why you might want to collaborate:
  • code base is reasonably clean; things are kept modular and are properly typed, so it should be fun to work with
  • I'm a pretty experienced dev (but not in TypeScript), so I have some good coding practices and can learn quickly
  • small, atomized git commits and feature branches
  • webpack-dev-server leads to fast iteration
  • modular body part system can enable very immersive games

Here's a demo of what the current engine is capable of with a placeholder map of an old project:
  • paused time when you're not taking an action (just looking around)
  • move actions
  • strike actions with your fist (left click - what actions you take with left click will be configurable)
  • right click for more actions (detailed examination, combat actions, dialogue)
  • field of view calculation (shown as the cone in the direction the character is facing)
  • AI behaviour (single follower that tries to keep at most a certain distance)
  • camera tracking (can be disabled with a key to look around)
  • top down rendering of body parts (hands, torsos, and heads are rendered with their respective colours and scaled sizes)
Hzh5GKY.gif


My next step is implementing aggressive AI behaviour and calculating damage, then it's implementing the detailed combat state (the game is a finite state machine with certain states/screens - what is shown above is the local movement screen which will be most of playing).
 
Last edited: