- Fixed bug where server could send packets from players without a defined protocol
- Players connecting with protocols < 4 now defaults to protocol 4
- Some tweaks to entity typing system
- Fixed memory management issues with shared pointers
- Some optimizations with entity and player updating
- Players are no longer updated once disconnected
- Playercells no longer autosplit while force merging
- Settings are now loaded from JSON file #11
- Added leaderboard with
game_leaderboardLength
config - Added
player_skinNameTags
config and removedplayer_cellRemoveTime
config - Refactored & reduced some of
map
's methods - Added methods to
Buffer
class to read/write UTF8 & Unicode strings without thewstring
type - Added
kick
command - Implemented playerbots with MultiOgar AI (for now..)
- Fixed minions having incorrect skin names
- Fixed crash with
setname
command - Fixed bug where ejected cells spawned by the
replace
command were intangible - Added current game tick and average player score to
debug
command - Added
clampX
&clampY
methods toVec2
class for spectator viewbox - Added
apt update
toinstall_uws.sh
- Added
contains
method to QuadTree (mostly for debugging purposes) - Moving entities are now updated in reverse order to reduce cell switching
- Added startup graphics
- Fixed seemingly random crash caused by clearing a buffer that does not exist
setmass
command now sets absolute mass of the player instead of the mass of each cell- Minions no longer respawn unless their owner is in-game
- Small refactoring to logger
- Added logName, logFolder, logBackupFolder configs
- Added cmake support
- Added pstring command to print debug information about a player
- Added server playerbots config
- Added server minionsperplayer config
- Combined install_uws.bat into compile.bat and made it actually work
- Combined install_uws.sh into compile.sh and made it actually work
- Other optimizations and performance improvements
- Added
server_host
configuration - Implemented minions with Q controls
- Replaced doubles with floats where they were more appropriate
- Switched to using flags for entity states rather than multiple booleans
- Reorganized some methods for
Entity
class - Added vanilla feature where orphaned playercells snap back to their last coordinate when pushed away
- Fixed bug where food and viruses spawn after one was eaten until the max amount was reached
- Fixed bug where players could sometimes auto split over the max cell amount
- Significantly improved virus explosions
- Fixed crash that would happen when orphaned playercells were split
- Added vanilla feature where playercells under 625 mass cannot grow from playercells at 18 mass or below
- Fixed some memory management issues with entities
- Added vanilla feature where viruses splitting from stationary ejected mass will shoot to the right
- Small refactoring of
Game
class and addedupdateTime
for monitoring server performance - Fixed seemingly random crashes from updating playercells
- Cleaned up
Map
class - Fixed food being able to spawn near ejected mass
- Removed "An unnamed cell" as the default name for players
- Fixed ghosting caused by updating visible nodes incorrectly
- Added vanilla feature where orphaned playercells remain on the map for all eternity
- Fixed excess newlines in console output on linux
- Fixed crash on server shutdown due to players being deleted before entities
- Refactored and reorganized
Commands
class - Added aliases for some commands
- Changed command format from
command(args...)
tocommand <args>...
and removed case sensitivity - Added ability to execute player commands on groups of players using
-p
,-b
, and-m
flags - Reformatted
help
command - Added
pause
,minion
,setname
,setskin
,spawnmass
,explode
,speed
,color
,split
, andreplace
commands - Added
install_uws.sh
to aid in importing the uWebSockets library for linux - Fixed compiling on Windows #10
- Spelling & grammar corrections
- Other optimizations and performance improvements
- Rewrote and reorganized how packets are handled and interpreted
- Fixed bug where uWS server would never start if it wasn't fast enough
- Rename Vector2 module to Vec2
- Removed 'get' portion of 'getter' function names (I like it better this way)
- Reformatted and reorganized
Entity
andPlayer
classes - Implemented merging for playercells along with
baseRemergeTime
configuration - Implemented auto-splitting
- Implemented (experimental) virus explosions along with
minVirusSplitMass
configuration - Fixed bug where groups of viruses shot from the same virus would collide with each other
- Fixed bug where moving ejected cells would not collide with ones that have stopped moving
- Rewrote collision, move, and eat engines
- Added
Entity::toString()
method - Fixed bug where eaten viruses would respawn regardless if the current amount was greater than the start amount
- Fixed bug where eaten playercells would not be removed from their owner's vector
- Implemented playercells freezing after their owner has disconnected, along with
cellRemoveTime
configuration - Added the ability to linesplit
- Fixed bug where newly-split playercells would spawn at a random point on the map
- Implemented vanilla feature where newly ejected cells do not collide with their creator until it has stopped moving
- Added configurations to change logger severity and logger colors
- Added
Game::startLogger()
method for use with new configurations - Small refactoring to
Game
constructor - Added
map::spawnUnsafe()
method for use with spawning accelerating entities - Added
map::acceleratingEntities
variable to store and update all accelerating entities at once - Write methods in
Buffer
class now return references to themselves - Mostly fixed bug where dangling pointers to removed entities were being passed through collision/move/eat engine
- Added
kill()
,clr()
,pop()
, andmerge()
commands - Added ability for ejected cells to spawn at random velocities and speeds when spawned using the
spawn()
command - Refactored how players are updated
- Implemented updating for each player state
- Added ability to spawn from ejected mass, along with
chanceToSpawnFromEjected
configuration - Added ability to freeroam, along with
maxFreeroamScale
andmaxFreeroamSpeed
configurations - Added ability to spectate the largest player
- Improved playercell splitting and added
collisionIgnoreTime
configuration - Fixed bug where some players would not be removed from list of clients after disconnecting
- Added
dot()
andround()
methods toVec2
(previouslyVector2
) class - Fixed compiling on linux, now using g++-7 for c++17 features
- Other optimizations and performance improvements
- Added support for linux (please note that running this on Linux is still buggy)
- Fixed invalid
UpdateNodes
packet being sent and addedwriteStrNull()
method to Buffer class, thanks to @B0RYS :) - Reorganized where files are placed
- Added variadic arguments to logging methods
- Refactored entity class
- Added entity acceleration and deceleration
- Added (experimental) playercell and virus splitting
- Added (experimental) ability to eject mass
- Added (experimental) method for collision resolution between cells
- Added border check for
Entitity::setPosition()
- Fixed playercells moving too fast
- Now using pre-loaded configs rather than loading from json
- Switched to using
shared_ptr
for entities - Added a few extra settings
- Refactored namespace
map
- Minor tweaks to visible node updating
- Reformatted and tweaked
playerlist()
andspawn()
commands - Moved and renamed
Position
class from Utils.cpp/hpp toVector2
in Vector2.cpp/hpp - Added
compile.sh
andcompile.bat
files to aid in compiling this project - Added
Changelog.md
- Rename
size
toradius
- Added and renamed some configs
- Fixed player viewbox center
- Removed and changed some methods from utilities
- Refactored
Commands
class to improved how commands are parsed - Refactored
Entity
class - Added flags for each entity type along with
canEat
, andavoidSpawningOn
variables for efficient consumption and safe spawning - Refactored map to comply with new entity flags