Giter Site home page Giter Site logo

tdserver's People

Contributors

aikanwha avatar kowagatte avatar twitch1g88 avatar

Watchers

 avatar  avatar

tdserver's Issues

refactor

Need to clean up the server code, sprinting to a playable release has left a lot of the project in a mess.

version enforcement

Prevent clients of the wrong version from connecting to the server.

If the server is running a newer version than a client there is no guarantee that any of the previous or new features will work exactly as it did before. Because of this we want to notify players and/or force them from using old versions on live server.

To avoid the problem of modified clients being kicked without passing a string check (Should probably be a hash/integrity check, idk) The kicking logic is only held on the client, that way if a modified client DOES NOT CARE about incompatibility it can continue with the established connection.

ISSUE that will not be resolved

Old client versions such as V1.0 and V0.2.0-beta are not tagged nor have the logic to respond to clients version request. Therefore this change will only apply to clients running version >= v0.3.0-beta

This is an oversight from how we have been using version control (git) since we have just been half-hazardously slapping features in and when there feels like enough we "update". Since nothing is marked or tagged there is no way to push commits to old versions of the project. Moving forward we will create version branches and branch our features off of those instead of master. If I found out the proper way to do this then we will move to doing that.

Coin Mechanics

Features:

  • Collect Coins
  • Increment Score
  • Death
  • Decrement Score

Elo Rating is not impacted by Draws.

EloRating does not accept draws as a valid game outcome.
Changing EloRating to accept a float instead of an Integer for the outcome of the game will prevent this issue.

Delete Abandoned Games

Continue implementation of #8

Features:

  • Allow players to join an old session
  • Remove abandoned games after a specified time

Bullet Collision

Features:

  • Bullet graphics
  • Bullet Movement
  • Players die when getting hit by bullets of opposing players

Cannot serialize an account with GameRecords

Accounts store records of their last played games as a List of type GameRecord, because this is nested inside the account, the #fromJson method in the Account companion object will probably not serialize this list back into a list of GameRecords.

Will probably have to write a custom serializer for the Account data class.

Custom Games

Features:

  • Use GameIDs as "Game Codes"
  • Add screen for creating or joining games
  • Players receive updates of each others location
  • Color each player respectively

Multiple Sessions

This is a problem with the current implementation. Since we rely on Godot peer IDs if a player disconnects mid match and reconnects all active games will be associated with the peer ID instead of the Account.

We should move to attaching games to accounts instead of peer IDs that way if a player reconnects/logs in he can be prompted with active games.

Features:

  • On login player IDs are saved to respective username
  • On disconnect remove id/account association
  • Store games in relation to this data
  • Store peer_ids of previous sessions

Game Cycle

Features:

  • Game starts when players are ready
  • Game counts down from 10s to start
  • Players can play the round, first to collect all coins wins
  • Games end and players are sent back to game selection screen

Prevent Objects from different games colliding

After some searching this is actually a super simple fix utilizing World2D's and Viewports.

Only issue is in debugging server side, you would need to assign a TextureRec to view a game.
I am fixing this issue independently because it is catastrophic to playability.

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.