Code Monkey home page Code Monkey logo

magnet's People

Contributors

amaruuk avatar kettek avatar liqmix avatar sionleroux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

magnet's Issues

Pathfinding

At the moment, I have the "v" symbol used in the level format to mark a "pathing" location, but I figure this should be removed and a general pathing algorithm used. The basic logic would be that on wave start and on turret placement, a path would be traversed from the spawners "N" and "S" to the player's core "C". Additionally, any active enemies should also make a pathing check to see if the core is reachable. If a path cannot be made, then there should be no turret placement allowed.

We can probably use A* since it is cell-based and we can just use all level cells as potential positions.

Ignore incorrect wave spawn kinds

We should not crash if the kind of spawn to be spawned is missing. It should be cleared when first building the linked list, with an error reported to the console.

Endless Mode???

Perhaps some maps could be marked endless, where waves continue looping or somehow increase in some definable manner. The maps marked as such would likely be large and open maps.

Look into doing an FS mixed embed/external

I wrote a small library some time ago that allows one to mix multiple directories into one aggregate "view", with results being an aggregate of the two, with a priority for one over the other. See https://github.com/kettek/go-multipath

However, since I wrote that, an FS interface abstraction was introduced to go. The embed fs functionality we are using adheres to this, so it may be possible to write a v2 of go-multipath that allows us to read from embed as well one or more actual system directories as if they were one.

Tasks and Defs 2.0

This list is a remaster of #2 with more concrete tasks now that we are more than half-way through the jam and have a better understanding of life and the universe around us.

  • Physics
    • Player movement blocking based on filled cell (is this necessary?) At least should prevent moving out of valid game tiles.
  • Music
    • Menu music
    • Wave music
    • Build music
    • Victory music
    • Loss music
  • Sounds
    • Turret fire
    • Turret acquire target (maybe)
    • Player fire
    • Player walk (? maybe, might be cute)
    • Build/place wall/turret
    • Spawn sound
    • Enemy die (maybe)
    • Enemy walk (maybe, might also be cute)
    • Enemy hit core
    • Core explode
    • Wave start (powerup sound, like the spawners gettin juiced)
    • Wave end (powerdown sound, dejuicing)
    • Victory hit
  • Enemies
    • Walker
    • Runner
    • Flier -- does a direct path to the end and does not use pathfinding.
    • Trundler (? Some sort of opposite of Runner)
    • Boss types? Like maybe can walk thru/destroy turrets? Would need a sound cue and probably a preview of its destructive path.
  • Player gfx
    • Player 1/Player 2 polarity -- I would be inclined to invert their colors.
  • Net
    • Projectile spawing/destruction
    • Health updating
    • Placing and destruction of walls/turrets
    • Wave state updating (spawner done)
    • Loss/Victory state synchronization
  • Game Logic
    • Win/Loss conditions
    • Game progress state machine: wave -> build -> wave -> build -> loss/victory -> state_travel
  • Other
    • Energy orbs/currency for building. Also dropped by enemies. Should probably be an entity
    • Limiting building using currency.
    • Returning half currency of wall/turret destruction...?
  • Menu State
    • Main Menu (has start/lobby, quit, and credits...?)
    • Lobby (allows map picking, maybe? And light rules?)
      • Join by IP:Port, Host by IP:Port, Join by magservice name, Host by magservice name -- MAYBE allow some simple matchmaking with player count shown?
    • Controls/Tutorial
      • Maybe "F1" toggled and initially shown on start overlay graphics showing text for controls and arrows pointing to the diff. UI elements says how to use them?

Properly network sprinting

Sprinting can cause some positional disconnects, as it doesn't seem to be transferred. We should add a "Running" field to the move action.

Tutorial/Help Screen

We need to create a super simple tutorial overlay type thing.

Basically, on first game start, or when the player hits F1 or H, an overlay is placed atop the screen. It contains the following:

  • Text near the top-left saying that it shows current game mode and wave spawns
  • Text near the top-right saying that the players' ORBS are there
  • Text near bottom-left saying that is your toolbelt that can be used to shoot gun, place/destroy turrets, etc -- and that they cost orbs -- ALSO THAT PRESSING IT TWICE WILL INVERT POLARITY.
  • Probably some sort of general controls?
    • WASD/right-click to move
    • left-click to attack, place, or destroy
    • Alt to show turret radii.
    • Escape to open menu.
    • "R" to restart? Should be rebind "R" to invert toolbelt item polarity?

Tasks and Defs

Tasks and Defs

  • graphics

    • cell based
    • oblique
    • 16x16 cells, larger sprites allowed (rendered from center origin)
  • physics

    • collision
      • collision blockers (walls & turrets)
    • sliding
      • collision with wall at angle preserve momentum
    • attract / repel
      • overlapping magnetic fields, use net vector
      • applies to projecticles
      • produced by projecticles?
      • produced by enemies
  • pathfinding

    • generation on map update
    • calculating ideal steps on entity pathing start
  • datatypes

    • base entity
      • turrets
      • enemies
      • actor
      • projecticles
    • maps
      • cells
      • entities
  • input

    • keys
    • mouse
  • resources

    • maps
      • map parser
      • plain text
      • cell
    • sprites
      • png
    • bgm
      • ogg format
      • menu
      • game
      • win
      • loss
    • sfx
      • ogg format
      • turret place
      • projecticle fire
      • enemy death?
      • enemy spawn?
      • player death
  • states

    • menu
    • game
    • victory/loss

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.