tdserver's People
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.