# Four Seasons - CSE 125 Team 5 (Vivaldi)
Four Seasons is a character-based 2v2 capture-the-flag shooter.
Checkout out our Live demo on Youtube
https://github.com/ucsd-cse125-sp24/group5/assets/68050193/96ec16c3-dff9-4f6d-87dc-59c4680e0d84
There are four characters associated with each of the four seasons, each with a unique ability. Two teams of two players fight to capture the egg for as long as they can.
Players may shoot each other and use abilities to try to take control of the egg. When a player's HP is depleted, their position on the map is swapped with their shooter's (players don't die in this game!). If a player is "killed" while holding the egg, the player and their shooter swap positions, and the egg is given to the killer.
Each character can launch a projectile, each with its own unique side-effects!
Character | Projectile Effect |
---|---|
Bunny (Spring) | Heals all players within its radius upon impact |
Bear (Summer) | "Confuse" all players within its radius on impact |
Fox (Fall) | Launch a projectile that deals significant knockback |
Penguin (Winter) | Significantly reduce all player movements caught in its radius |
The active season also has a passive effect on gameplay
Season | Seasonal Effect |
---|---|
Spring | Passive Healing for all players |
Summer | Triple jump |
Fall | Reduced ability cooldowns |
Winter | Faster movement on the ground |
Points are awarded according to how long each team maintains control of the egg, though the egg may not always be safe to hold :).
The team with the most points when the timer runs out is crowned the winner! (Assuming the bug got fixed)
W
: Move forward
A
: Move left
S
: Move backwards
D
: Move right
SPACE
: Jump
E
: Throw the egg (if currently holding the egg)
Left-Click
: Shoot
Right-Click
: Use ability
Our code is cross-platform! Unless you're on Linux We support developing and building Vivaldi on both Windows and macOS, and the build instructions will be (or at least, should be) identical on both platforms.
git clone https://github.com/ucsd-cse125-sp24/group5.git
CMakeLists.txt
in the repository's root directory.From the repository root, run the following to build the game in debug mode.
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .
Alternatively you can use an IDE of your choice such as Visual Studio, or CLion to manage building for you since this is just a
CMake project. We recommend building the project in release
mode if possible.
Four Seasons can be run on both MacOS and Windows systems. Though all machines (including the server) all either be on Windows or MacOS due to some god forsaken reason we didn't have time to figure out.
common/setup.json
's server-ip
and server-port
(Modifying server-port
is optional) option to the IP address/port of whatever server you want to run on.
common/setup.json
server/
directory and running ../build/server/src/server
from the command line.client/
directory and running ../build/client/src/client
from the command line.common\setup.json
's server-ip
and server-port
(Modifying server-port
is optional) option to the IP address/port of whatever server you want to run on.
common\setup.json
todo
directory and running todo
from the command line.todo
directory and running todo
from the command line.If you want to add any additional libraries, make sure to copy the library's source code to lib
and add modify ./CMakeLists.txt
accordingly with add_subdirectory
to the
directory containing the library's source code within ./lib
. Also be sure to modify client/src
's and server/src
's CMakeLists.txt
accordingly.
There are much better ways of doing this like with FetchContent, but we're dumb.
The only library that was not added following the process above is Freetype
for client text-rendering. Don't be like Alan >:(
./common
contains definitions pertaining to server and client programs.
Add any additional server/client-specifc header files to client/include
or server/include
. CMake should automatically detect new header files so creating the file should be the only step.