DEVBLOG #8
Combat system, character creation, Short Stories, CP and OTA models & custom music
I'd like to thank @Gr4Ss, @Fruity and @M!NT for their spectacular work in todays devblog!
Made possible by @Gr4Ss
The combat system has been created from the ground up since the previous iteration. It is fully integrated into Helix, which will make it much easier to interface with other plugins being made (e.g. skill and medical system). As the combat system should involve a lot of shooting, it is somewhat integrated with the weapon’s base as well, for which we will be using TFA.
To roughly explain how the system works (and what you see in the videos against the NPCs): when you damage someone (player or NPC), the fight starts with a warmup timer while everyone involved is immediately frozen. This allows others to join the fight, or for people already in the fight to ‘tag’ people and force them to join. If people join quickly enough, they can start in the first round, otherwise they will end up on a waitlist. While waiting they are already frozen, and must wait a certain amount of rounds before being allowed to start. The longer the fight lasts, the more rounds you have to wait.
Turn order is currently always NPCs first, after that it is first joined, first served. So the initiator always gets a turn before the person being attacked to provide an advantage in the case of surprise attacks. People who join later also always get a later turn… If someone who is still on the waitlist gets shot, he will join as the last person in the next round (so whoever shot him gets at least another turn to shoot): this is to discourage people circling around as they will be vulnerable while waiting.
During a player’s turn he gets a small free move circle: this is shown by the initial blue circle. He also gets two action points he can spend as desired: shooting, moving, reloading, inventory actions, … For shooting, some guns can shoot more than one bullet with one action point (e.g. the USP-M gets 2 shots per action point). Remaining shots are shown on the UI. Movement is shown by circles: blue circles for movement without consuming an action point, yellow circles for how far you can move by using all your remaining action points and running straight in one direction.
Moves also aren’t one big move: every move consists of several smaller sub-moves (shown by the counter on the middle and the dotted blue circle). If you move in one direction, that means you cannot move as far in another direction anymore as also shown by the shrinking circles. A small initial movement is free of charge to allow you to pop around a corner and back into cover without using an action point. This limited movement gives you some freedom in positioning and properly lay down fire from cover. Cover will be important.
To keep you moving fluently, you will automatically consume move points when reaching the edge of the dotted circle. You automatically consume another action point if you have one when you reach the edge of the full blue circle. If you reach the edge of the full blue circle with no action points left, you get frozen in place (but can still fire any shots you have left).
Turns right now are set quite fast, at 6 seconds per turn (some recordings may show different times, they are easily configured in-game and I change them for testing). We want to avoid fights taking too long and keep a certain amount of pressure on players. 6 seconds is long enough to do all your actions at a calm pace, but doesn’t leave you room to start pondering about deep strategic decisions or to carefully aim every single shot you make with an SMG. Once it is your turn, thinking time is over.
Outside of your turn, you are free to look around and stand/duck. You can look around and stand up so that you can tag people to force them to join the fight immediately and not give them the chance to properly position themselves outside of your turn. Together with the waitlist, this hopefully encourages people to join the fight behind friendlies and not rush up all the way to the enemy (or behind the enemy). Standing/ducking also makes it easy to sit behind cover outside of your turn, and only stand up when you intend to shoot or tag: this rewards good positioning and discourages being caught in the open.
If for two rounds you did not take any damage or did not do any offensive action, you can escape the fight in your own turn by pressing shift+f3. When this is the case, you will see a hint on the UI. Note that if during that turn you take an offensive action, you can no longer escape.
- Basic fight logic
- Warmup before the first turn after a fight starts
- Firefight round & turn logic, including action points
- Turn times out after configurable amount of seconds
- Waitlist for late joiners. Timescale set to 1 round if joining in second half of warmup, 2 rounds if joining during the first 2 rounds, 3 rounds if joining after that
- Ending fights if no valid player left to take the first turn
- Ending fight if everyone skips their turn
- Basic actions
- Starting fights by damaging someone
- Manual turn skip by pressing F3, will immediately end your turn
- Unconscious players automatically skip their turn
- Ending turn if no more actions left, happens automatically
- Joining fights by tagging or damaging someone
- Escaping fights via shift+F3 if no damage/offensive action taken for 2 consecutive turns; can only be done during your turn and will immediately end your turn
- Networking all information to the client for UI & client-side logic.
- Basic limitations/tracking
- Out-of-turn players cannot move
- Out-of-turn players cannot shoot
- Out-of-turn players cannot reload
- Out-of-turn players cannot use items
- Tracking movement, movement uses action points
- Small initial movement is free
- Tracking shots fired, shots cost action points
- Amount of shots depends on gun
- Tracking reloads, reloads cost action points
- Tracking item use, using items costs action points
- OOC Limits
- Preventing charswap while in a fight
- Preventing observer while in a fight
- Cleanup after D/C
- UI
- Icons for actions, shots, moves
- Timer for remaining turn time
- Text for participants, waitlist, next turn or round start
- Text for F3 to skip, shift+F3 to leave fight (latter only shown when a player can escape a fight)
- Circles showing maximum movement distance: blue circle for movement without using action points, yellow circles for movement distance using movement points
- Circles update as a player moves: their center is updated to the player’s position and radius is decreased to prevent big back and forth movements within the inner circle being free. Some degree of back and forth movement is still possible, just enough to properly peek a corner and go back fully into cover.
- Dotted circle shows the distance for one move point, not visible if only one move point left (as it would overlap with the thick circle)
- Some basic commands for now
- Console & admin stuff
- Logging for admins, a lot of logging (also because it helps in troubleshooting)
- Even more server-side debug logging if enabled for errors
- Basic config options to set some values
- Pre-shooting checks
- Forcing players to join a fight by ‘tagging them’ (aiming straight at them and attempting to shoot without actually shooting), even outside of your turn
- Tagging someone in a fight while not in a fight makes you join the fight
- Tagging someone who is in a fight while in a fight should join the fights
- Fighting with NPC’s (NPC turns, joining, killing them to remove from the fight)
- All NPCs have one turn together to avoid too long waits when a lot of NPC’s are involved.
- Outside of their turn, NPCs are frozen like normal players
- Tagging an NPC automatically tags all NPCs around them
- NPCs always have the first turn of a round
- NPCs have a separate turn time configured so it can be set independently from the player’s turn time
- NPCs do not start fights, even when damaging a player
- If there is at least one NPC in the fight, the fight cannot end even if everyone skips their turn or there is only one actual player left
- Handling damage
- Starting fights by shooting, still apply (some) damage
- Damaging someone in a fight nulls the damage and makes you join the fight. If you are already in another fight, join the two fights
- Shooting someone who is on the waitlist makes them active in the next round, inflicts full damage (to discourage people circling around a firefight to surprise from the rear: you will be very vulnerable to be KO’ed and PK’ed)
- KO’ing people if they reach 5 HP, bleed out timer starts for an automatic PK after a certain amount of rounds without being stabilized.
- PK’ing people if shot while down
- Sound
- Own turn start
- Other turn start/own turn end
- Movement action
- Music when fight starts just because it is cool when making recordings.
There’s still some things on the TODO list for the combat system, so just so you know we are planning some things already:
- Skill system implementation: changing some values according to the player’s skill and attributes. High skill/attributes will definitely give an edge in a straight up fight, but shouldn’t tip the odds so much that it always you to get away with doing stupid shit.
- Some ‘hooks’ we are considering: movement range, reload cost, shot count, shot accuracy/damage, gaining initiative, bleed out time, when you gain consciousness, …
- Integration with the medical system for stabilizing players, turning bleed out ticks into a bleed out time when the fight ends while the player is down.
- A grace period to use items even after your turn has ended, assuming you had the required action points left over at the end of your turn. This allows turn times to stay short, but doesn’t put pressure on you to fiddle with your inventory during your turn. Of course, nothing stops you from having your inventory open and ready to go right before your turn starts either...
- Sound
- Random combat music, with the option to turn it off client-side
- Joining fights together into 1 just in case people accidentally start multiple fights (guy a shoots x while guy y shoots b…)
- Some form of suppression mechanic to encourage people to not camp one singular piece of cover for eternity
- More admin commands & ESP info to make it easier for them to watch over fights and follow what happens.
- Other ideas? Always welcome
Character Creation
Made possible by @Fruity
The Appearance UI is still work-in-progress, the jacket & trouser selections are placeholders, there'll be about 7 to choose from and around 4-9 skin facial feature selections depending on the model.
Event Server
Made possible by @Imperator RAD-X and @TheDeNuke
Short Stories being headed by DeNuke and LORD-RAD-X has nearly reached its stage of readiness as per the continuous development schedule for the past month. The server will be hosted on the HELIX Framework to ensure server stability and playability. With this information being passed from RAD, the server events will be the prologue leadup to the actual server where like minded roleplayers will be able to assume a head start position on their character development. As the event server is based on the aftermath of the Seven Hour War, players will be able to assume playable positions for different characters of their choice so long as they are able to successfully apply through a vetting process. It is facilitating an origin point from the earliest progressive area which stems to flourish the occupation at a later date.
The server will be fitted with 32 players considering its specialisation, but this may be changed for both higher or even lower population counts. DeNuke has superbly written the entire opening plan for the first chapter with a detailed list of instructions for the Game Masters to follow, ensuring a successful coordination between the staff and players. Gr4Ss has had a tremendous part to play in the establishment of Short Stories as well. He has developed the event server with the refinement of in-game plugins and scripting with much desired bug fixing.
The finishing touches are being applied before it becomes fully available to the rest of the interested playerbase.
Intro/character creation music
Made possible by @M!NT
Mint will be working on additional new UI sounds to come with the complete package
New CP & OTA models
Made possible by Blackout, Stgs and jqueary
Patreon
Patreon is empowering a new generation of creators. Support and engage with artists and creators as they live out their passions!
www.patreon.com
Last edited by a moderator: