Skip to content

loqwai/carbonaria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Idea

A game that combines Heat Signature & Castle Doctrine

2D top down game, You control a ship that you can use to fly next to other ships. You can go into them and take them over like in Heat Signature You can then take parts from that ship and attach it to your own ship

You control the layout of your ship, but, the more convenient you make access, the easier it is for others to take over your ship if you are attacked.

Somehow, the things you add to the ship need to be able to help you when you're taking over enemy ships. So maybe the modules will be something like an armory for better weapons, or a robot bay, or mech suit module. Some of the stuff should be defensive, to help your ship repel boarders while you invade.

If a boarder takes out a module, you lose that ability in real time. So if they take out your robot bay, all your robots will go to sleep until you repair that module. Maybe armories would stop reloading your weapons or something?

All modules must be accessable to boarders in order for you to be able to use them. You can guard them with turrets and stuff, but it has to be possible for the enemy to walk over to them to shut them down.

MVP

  • You can control a unit using WASD that can move around
  • The area you can move around in is bounded
  • There are other things in the space you can move around in
  • You have some kind of stick you can swing
  • The room is automatically generated to be something other than square.
  • You can hit things with the stick
  • The room generates tile by tile so you can watch the progress as it happens.
  • Some of the other things also have sticks
  • Those other things try and hit you with their stick when you get close
  • When you hit things with your stick, you get points
  • You can see how many points you have
  • When you hit things with your stick, they die.
  • If you get hit with a stick, it subtracts some health
  • If you run out of health, it's game over
  • You can see how much health you have left
  • The camera follows the player.
  • The camera follows the player with a bungee effect.
  • There should be a place to go. Let's call it an exit
  • When you reach the exit, a new level is generated
  • If the exit is off-screen, something should tell you where it is
  • The room defers generating tiles until they are about to come into view.
  • You should always usually be able to reach the exit
  • There are chests that the player can pick things up from.
  • A Powerup you can pick up that makes you move faster
  • A Powerup you can pick up that makes you move slower
  • A Powerup you can pick up that allows you to smash through walls?
  • Chests you can pick up that give you mods
  • Mobs should spawn close to the player
  • [x-ish] The camera is limited to a small circle so you can't see very far.
  • make pretty via AI.
  • Figure out why some walls look weird
  • Try using an ASP language like Gringo or FlatZinc to build the room generator - chalk is a Prology language, built in to Rust, that the language uses for type inference!
  • Import maps via LDtk (bevy plugin is here
  • Add a way to restart the game
  • Add a game over UI

Grand Unified Theory of Roguelike Fun (tm)

  1. define fun = combinatorial complexity that a user can interact with at play time (lol)
  2. Moving from constant->scalar increases complexity according to The Transformation Priority Premise
  3. Therefore, going from constant->scalar on game objects users interact with can create more fun.

constant->scalar ideas

  • single powerup 'type' -> multiple powerup types
    • persistent powerups
    • 1-off powerups (e.g. a powerup that exists for 1 tick that adds health for a player on pickup)
    • time-limited powerups
  • chests contain single powerup -> multiple powerups
  • single weapon type -> multiple weapon types
  • single weapon equipped -> multiple weapons equipped (or equippable, in inventory)
    • ability to detect which weapon is equipped
    • ability of player to select equipped weapon
    • ability to pick up weapons from chests
  • single enemy type -> multiple enemy types
  • single 'damage type' -> multiple damage types
    • including damage resistances for entities, which can be offensive or defensive (resistances)
    • e.g. damage / time, / area / fire/ice/acid/physical. That sort of thing.
  • single sprites for objects -> multiple sprites
  • constant player -> multiple players

...etc.

Ideas

Scale enemy difficulty by increasing the number of powerups they spawn with over time. Randomly chosen? All enemies in a wave share the same set?

Chaining Mods?

Maybe powerups = mods

  • Mods should point to an entity it "affects" that has a component that can be modified by the mod.
  • Multiple mods should be able to affect the same entity.
  • Mods should be able to be stacked.

Mod Stacking?

  1. Entity starts with an empty representation of whatever component the mod affects.
  2. That component is cleared at the start of each tick.
  3. That component represents the computed value of the mod stack.
  4. The first 'mod' is the base value of the component for the entity
  • e.g., if the mod is a speed mod, the base value is the entity's speed. This can change based on a 'class' of fighter, mage, or whatever we do.
  1. Each subsequent mod is added to the base value of the component for the entity
  • systems run in order(?), so adding/subtracting mods should run before multipliers, etc. *. [ ] Could every hit be a mod that subtracts health? That could prove the model. *. [ ] 'Bullets' could just be payloads for mods. Literally our 'chests' with a velocity. The collision w/chests logic would deliver the mod!

Polishing Up

  • Move from deprecated physics engine (Heron) to the authors recommended replacement, bevy_rapier
    • diff of someone else doing it in this Youtube vid.

rust svg/react rendering Dead Cells Level Editor (that has a Bevy plugin)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published