GithubHelp home page GithubHelp logo

spacegame's Introduction

hello world!

spacegame's People

Contributors

madbence avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

spacegame's Issues

Sync state across clients

Right now, the server does not store the application data.

progress

  • do calculations on the server (with the same code!)
  • sync state regularly (to handle state divergence caused by floating point math)
  • sync state on init

Config management

there should be a config.js file, where all configuration variables are assigned.

User management

This issue is a simple placeholder for tracking the state of user-management progress.

  • #12 Design user model
  • #27 Implement user-management

Scriptable ship controls

  • should run on the browser
  • it should have access to the low-level game api
    • dispatch actions
    • simulate state

Handle projectile collisions

  • ships have health (remove destroyed ships)
  • ships cannot hurt themselves
  • ship-ship collision
  • ship-projectile collision

Figure out user model

It should support multiple providers:

  • facebook
  • google plus
  • local (user + password)

Add navigation map

players might drift away from each other quickly, but they should be able to find each other again

Roadmap

ideas

  • more ships
  • custom ships (ship editor?)
  • better simulation (now mass is ignored)
  • #135 custom controls (user scriptable controls)
    • related: AI
  • save/share custom controls
  • better graphics (webgl!)
  • achievements
  • save/replay games
  • better app lifecycle management (rejoin games, etc)

todo

  • chat
  • user management

Code reviews

i think we should implement a simple review process before merging pull requests

my proposal

for daily work, our team (@purposeindustries) developed a similar, very simple process:

  1. work in feature branch
  2. push & create pr
  3. if you're ready, put a review-needed label on it (it should pass travis tests)
  4. someone else reviews it, removes review-needed label, puts ready-to-merge label
  5. pr opener rebases the brach onto master & fast-forwards master

feedback is welcomed ๐Ÿ˜‰ @Thegaram

Game modes

For start, implement free-for-all:

  • respawn (predictable spawn positions)
  • spawn protection (#142 + #144)
  • point system (for start, 1 point for 1 kill)
  • round system (point or time limit)
  • rejoin game (#146)
  • keep points after reconnect (?)

Simplify require paths

../../../foo/bar is ugly. there are several options to simplify this:

symlink from node modules

eg node_modules/server -> src/server, so everything can be imported like server/x/y or client/x/y etc. this works on windows too afaik. setup is a bit fragile, since you need a postinstall script that links stuff.

submodules

eg. move src/server to node_modules/server (and add them to git), etc. makes dep reinstall quite hard, since you usually just do $ rm -rf node_modules && npm i.

$NODE_PATH

set $NODE_PATH to src. this might work on windows too, but i'm not sure that the syntax is supported (eg. $ NODE_PATH=./src babel-node src/server/app)

local modules

modules can be installed from local directories, but then we have to maintain their own package.json files, etc.

i have experience with the symlink approach, it definitely works. i have tried also local modules and simple submodules, but they are weird (but they do work). i was not aware about $NODE_PATH until a few months, but it looks nice (if it works on windows).

Improve phy model

Thrusters should behave like in real life, they apply both force and torque to the ship.

progress

  • Custom thrusters
  • Apply force
  • Apply torque
  • Configurable delta-t

Store explosions in state

they might become relevant later (eg. they might deal constant damage to ships inside them), also rendering the scene becomes simpler with this.

Add shields

see #142

it might be refactored into something more general:

type Ship = {
  shield: Shield | null
}

type Shield = {
  ttl: number,
}

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.