Coder Social home page Coder Social logo

rorykoehein / warx Goto Github PK

View Code? Open in Web Editor NEW
10.0 10.0 2.0 760 KB

Silly multiplayer game. Play here:

Home Page: http://www.warx.io

License: GNU General Public License v3.0

HTML 0.87% JavaScript 98.91% Shell 0.22%
game multiplayer react real-time redux redux-observable rxjs socket-io

warx's People

Contributors

rorykoehein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

warx's Issues

Proper sync/render

  • work with steps/game loop on the server
  • server to collect all client input for a step, don't process yet
  • server to process all client input for each loop (calculate new game state)
  • server to send new game state (or diff?) to client every ~50ms
  • client to render every 16ms, render ~75ms in the past
  • client to ignore any message that arrives after a newer message
  • use linear interpolation to position the object along the path (could possibly use css transitions for this)

https://www.slideshare.net/MarioGonzalez15/realtime-html5-multiplayergameswithnodejs-7868336/22-ulliSo_we_set_up_a
https://github.com/lance-gg/lance/blob/master/src/ServerEngine.js

Add scoreboard

  • toggle scoreboard on top of screen
  • show username, kills, deaths, time on server

Add admin/command prompt

  • how to determine admin user?
    • save hashed admin password in ENV
    • create command line tool to generate password hash

features:

  • kick players
  • add/remove bots
  • send messages
  • reset game
  • change rules

Add power ups

  • temp invisibility
  • faster reloads until dead
  • fast movement?
  • larger explosions?

fix sending actions to client/server (prevent cheating, share actions, make simpler)

This application shares some actions between server and client, actions can be
marked as any of these:

  • client-to-client actions (i.e. opening a panel)
  • client-to-server actions (i.e. connect-request, move request)
  • server-to-client actions (i.e. new connection, player moved)
  • server-to-server actions: update server state without directly sending to client(s)

The server should dictate these types to the client somehow.

Actions which are client-to-server or server-to-client will also be dispatched
at its origin. This means actions must be unique between client and server.
This should be tested somehow (todo), possibly at runtime.

0.1 cleanup

  • general cleanup before publishing
  • make sure no api keys (circleci?) or other stuff is public

Central hub

Make servers call home to central hub, so players can join different servers with different rules/config

Better movement

  • only listen to keydown and keyup
  • fire START_MOVE on keydown and END_MOVE on key up, with direction
  • let a timer on the server and client take take of the individual steps
  • possibly on END_MOVE let the server correct the clients position (in case out of sync)

Add sounds

turn on/off

sounds:

  • shoot
  • spawn
  • dead/hit
  • enter game?
  • move?
  • first place?

Mobile support

  • fix positioning/layout (login, game, info, choose server screens, score screens)
  • full screen mode
  • mobile controls
  • info/score buttons
  • PWA: service worker, add to home screen

Add bomb

  • drop bomb at the position of the player
  • make radius so that player can just escape
  • high reload time or as power-up

Add rocket

  • fire rockets which explode on impact of player, bomb or impact of walls

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.