Pyramid Panic - Beta Features - Custom C++ Networked Game & Engine
Pyramid Panic - Beta
Pyramid Panic is a top down 2.5D fighting/puzzle game where players start at the bottom of a pyramid, and must fight their way up to the top, solving puzzles along the way. The first player to reach the top and grab the treasure is born again, winning the game. Death isn't the end, however. Once a player dies, they become a ghost with the ability to haunt the player who killed them, possessing various objects. The collective will of the ghosts becomes the will of the environment.
Features Added Since Alpha
Many features were added when going from our Alpha build to Beta build. For a view of the projects Alpha state, checkout our initial Alpha Pyramid Panic Utopian post here. Since Alpha, the most noteworthy changes are as follows:
Randomly Generated Floors
The Pyramid the game takes place in is now fully randomly generated, where each floor is generated with different difficulties.
Network Update
Networking now uses both a TCP and UDP channel, where UDP is used for frequent updates and TCP as a control channel for important packets.
Networking now supports sixteen players simultaneously. Optimizations are being planned to push it to 64 players.
QuadTree Optimization
In order to optimize the scaling for the Rendering and Physics systems, a QuadTree was implemented. More information can be found here
Post-Death Ghosts & Possession
A large aspect of our games plan was for it not to end when a player dies. After death, players become ghosts who can haunt other players. Ghosts can possess any item which can be triggered by players (for example, doors) while also being able to possess and move larger items (for example, boulders). Ghosts are fully networked and considered a first class citizen in the game.
The initial Ghost system was documented here, however has been expanded since then to include networking and a variety of updates.
Combat Overhaul & Item Expansion
A large variety of depth has been added to items since alpha, with breadth being planned for release. New item categories added include helmets, chest plates and greaves.
Greaves have an active ability related to movement. For example, the basic greaves allow users to dash and gain a burst of speed. ChestPlates effect the damage being done to players as a multiplier. Helmets effect the critical strike chance.
Adding these changes included updating our combat system to incorporate damage reduction, critical strikes, and restructure how damage is calculated to better incorporate it with networking.
Graphical Update
The graphics are all in for Beta, despite not every piece being finalized. There are now proper player sprites and animations, built in a way where armour can be added/removed from a players visuals easily in a modular fashion.
The dummy AI's have their graphics in, being varieties of spiders who shoot projectiles. Doors, the floor, walls and other general ascetics have also been implemented.
A brand new menu has also been implemented with finalized graphics.
Mac Support
The game is now fully buildable and runnable on Mac, being a fully cross-platform C++14 game with only dependencies on SDL and OpenGL. These changes required overhauling much of the system, moving away from all VC++ specific syntax, moving to cross-platform alternatives, and moving our one Win32 dependency regarding mouse input over to using SDL.
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
Hi, this looks like a very cool project, but I have some thoughts about your (future) contribution(s). Considering that the GitHub account linked to your Utopian account is CarsonRoscoe, please only link pull requests/commits made with that account (so in this case adding Mac support). This way we can make sure that people are only getting rewarded for their own work, and not that of others, for example. If the other developers in your team want to contribute via Utopian.io and get rewarded for it, then they can make an account and do that themselves.
Furthermore some of the pull requests linked in your contribution were merged more than 14 days ago. Please keep in mind for future contributions that pull requests must have been merged within the last 14 days to be considered valid.
You can contact us on Discord.
[utopian-moderator]
Thank you very much.
My team has not been that interested in making Utopian requests themselves, so I have been for my features (Mac/Ghosts/QuadTree), however my team gave me permission to do our Alpha/Beta ones (and I just use the money to pay for some pizza work nights). I figured including theirs was okay as long as I also included my own. I'll avoid linking to their pull requests in the future.
I'll also avoid linking to older pull requests than 14 days ago. They were included simply because I was trying to aggregate all the notable ones since the Alpha post (the initial post). I'll avoid that next time and just stick to the requests that are the main focus of the post (what was accomplished in the immediate time frame of the post).
Thank you for your help and considerations.
Hey @carsonroscoe I am @utopian-io. I have just upvoted you!
Achievements
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x