SRB2 Message Board  

Go Back   SRB2 Message Board > Sonic Robo Blast 2 > Releases > Lua

Reply
 
Thread Tools
SRB2 Battle! Multiplayer Gameplay Mod Details »»
SRB2 Battle! Multiplayer Gameplay Mod
Version: 2.0, by CobaltBW (Community Noise Maker) CobaltBW is offline
Developer Last Online: Feb 2020

Version: SRB2 Rating: (6 votes - 4.00 average)
Released: 02-11-2020 Last Update: 02-23-2020 Installs: 3
SOCs Scripts Sprites/Graphics

(Note: these screenshots are not up-to-date, so there may be some differences in appearance to actual gameplay)


SRB2 Battle is a gameplay modification which radically transforms multiplayer versus from a ringsling-fest into an all-out brawl!




Download V2.0 (2/23/2020)

Featuring:
* Melee mechanics for PvP game modes
* Ring-consuming special abilities for each character
* Backdraft mechanic, allowing players to more easily keep pace with one another
* King of the Panel, a gameplay modification for Match and Team Match
* Egg Robo Tag, a twist on the hunter vs hunted game mode.
* Spectator flickies, to bring the players and watchers a little closer together

Spoiler: Meet the new match mode

Melee: There are no red rings, auto spam or rail snipes this time around. Instead, all of the characters' normal moves are now valid methods of attacks. Some attacks, like Knuckles' glide or Amy's hammer will have conditionally greater or lower priority depending on the attack and the angle of collision.



Meanwhile, the weapon panels in each match map now have a new role as score panels. Any player who tags one of these will slowly score points for themselves and their team. Whoever is the last person to touch the score panel before it disappears will gain additional points based on how long they have claimed the panel.



These panels are where a lot of the game's points are earned, so they're a big point of interest to all players in the map. Whether it's a free-for-all or you're playing on teams, expect massive brawls to happen here, and come fully prepped and armed with specials and powerups!



Want some good old stock match without pseudo king of the hill mechanics? No problem! Host your server with "weapon rings" disabled, and you can play standard battles without any score panels.

CTF is largely unchanged, but the dynamics may feel quite different since melee combat and special abilities take the place of weapon rings. With each character having such dramatically different abilities, teamwork in this mode is essential.



Spoiler: What are the special abilities?

Each character receives abilities that can be activated at the cost of ten rings by pressing the "fire ring" key or button. Each ability is distinct from one another and can often have multiple different uses.

Sonic | High Jump & Ground Pound
When Sonic is on the ground, pressing the fire key will send Sonic soaring into the air. Conversely, pressing the fire key in the air will thrust Sonic hard into the ground, sending out a shockwave on impact which can damage nearby enemies.



Tails | Buzz Sentry
Always the tinkerer, Tails has re-engineered an enemy Buzz into a helpful ally! Spend ten rings to spawn a Buzz buddy, which will target nearby monitors and enemies when the fire key is pressed.



Knuckles | Dig
Burrow underneath the surface or into a wall, then re-emerge in a fury, sending flying debris in all directions! If used in the air, Knuckles will strike downwards, digging into the first surface he makes contact with. Note that staying underground will gradually consume rings.



Amy | Charm Beam
What is this trickery? Enemies hit by Amy's Charm Beam will be shrunk down, rendering them unable to attack or use abilities.



When a Charm Beam hits an ally, it will instead grant them a force shield shield. Handy!



Fang | Throw Bomb

By spending rings, Fang will throw a bomb forward, or, if he is tail-bouncing, he will drop a bomb straight downward. Great for causing mischief from afar, it also has a long lifetime before exploding, making it useful as an area denial tool against other would-be interlopers.



Metal Sonic | Energy Blast

Launch an intense blast of energy at the nearest enemy by holding, then releasing the fire key. Holding in the attack will gradually consume rings, but it will also make the attack stronger, covering more range with a greater spread of projectiles.



Aiming is automatic! If you'd like manual control over your energy blasts, just toggle autoaim in the console.



Spoiler: Tag Mode

Uh oh: It looks like Eggman has sent one of his goons to roboticize Sonic and his friends.



In this mode modification, all players who are "IT" are turned into Egg Robos! Hunt down players with your superior aerial mobility, snipe from afar with laser pistols, and lay bombs as traps for would-be escapees. However, with slippery handling and slow firing, Team Egg Robo will have to be clever and work together to make sure they can successfully capture each and every woodland animal before time is up.




Spoiler: Other features

Backdraft
By trailing behind another player for a couple seconds at full speed, pursuers will gain a momentary speedboost that allows them to catch up to and overcome whoever they are chasing. You can gain speed on opponents and allies alike!



Spectator Flickies
Spectators are now represented by flickies. A minor change that brings the action and the spectator sport just a little closer together. Are the spectators watching you, or are you watching them?





Spoiler: Console Variables/Commands

battlehelp - Provides info on all of the different modes and mechanics.
autoaim - A toggle command. This will disable/enable automatic aiming for some ranged attacks like Metal Sonic's energy blast.
paneltime - Server variable: sets the amount of time that a score panel will lay on the field before disappearing.
prepaneltime - Server variable: sets the amount of time before the first score panel appears on the map.
panelwaittime - Server variable: sets the amount of time after a panel disappears that a new panel will appear on the map.


Spoiler: Can my custom character have special abilities?

It can! Whether you want to create an entirely new ability for Battle or simply copy from an existing template, giving special abilities to custom characters is relatively easy to do with a little bit of Lua.

Here's an example of what a custom character's ability might look like in Lua code:
Code:
local BattleFuncSet = false

addHook("ThinkFrame",function()
	if not(BattleFuncSet) and CBW_Battle and CBW_Battle.ActionChar then
		BattleFuncSet = true
		
		local function ThrowBomb(mo)
			local bomb = P_SPMAngle(mo,MT_FBOMB,mo.angle,0,0)
			if bomb and bomb.valid then
				P_SetObjectMomZ(bomb,FRACUNIT*8,true)
			end
		end
		
		CBW_Battle.ActionChar["eggrobo"] = function(mo,doaction,pressedaction)
			mo.player.actiontext = "Throw Bomb"
			mo.player.actionstate = 0
			mo.player.actiontime = 0
			mo.player.actionrings = 10
			mo.player.disableringslinger = true
			if doaction == 1 then
				if mo.player.rings >= mo.player.actionrings
					mo.player.spendrings = 1
					ThrowBomb(mo)
					mo.player.actioncooldown = TICRATE
				else
					mo.player.spendrings = -1
				end
			end
		end	
		print("EggRobo BattleMod action has been loaded.")
	end
end)
Not sure what everything does? No worries! Here's a small tutorial on how everything works:

if not(BattleFuncSet) and CBW_Battle and CBW_Battle.ActionChar then
CBW_Battle.ActionChar is a table which stores all of the characters' special ability functions. While you can't safely call on CBW_Battle's functions directly if BattleMod isn't loaded, you can define and store a function here which BattleMod will run when CBW_Battle.ActionChar[<yourskin>] is read by the game.

Since BattleFuncSet is a local, you can name it to anything you want. The reason we are performing this particular check is because the function we're going to create will be stored as a variable, and therefore this script only needs to be run once. Once BattleMod is loaded, we will set BattleFuncSet to true, preventing this script from being run again in the future.

The advantage of doing this inside ThinkFrame is that, because we are running this check on every frame, this script will work regardless of whether our skin is loaded before or after BattleMod.


CBW_Battle.ActionChar["eggrobo"] = function(mo,doaction,pressedaction)
This will define a function that BattleMod will read whenever the player character is using the skin in question. mo is the player object. doaction is 1 if the player is pressing the action key, and 2 if they are holding it down; 0 if neither, and -1 if the player is attempting but unable to perform an action. pressedaction is about the same as doaction, except it will always return the player's true action key input, regardless of whether the player can perform an action or not.

Note that doaction will always return -1 if the button was just pressed while:
- The player is exiting the level
- The player's action is on cooldown
- The player character is in pain
- The player's controls have been disabled
- The player is "not it" in tag mode
- The player has the flag in CTF
If you need to read the real action inputs during any of these moments, use the third function argument, 'pressedaction', to get the player's true inputs.



mo.player.actiontext = "Throw Bomb"
HUD display text for this action type. This can be changed freely during runtime to display different text under different circumstances.

mo.player.actionstate = 0
Scripters can use this to define when characters are in certain stages/phases of their ability. Generally the game will leave this alone except when the player is respawning or changing skins, at which point the game will reset mo.player.actionstate to 0.

mo.player.actiontime = 0
Generally used as a ticcounter to keep track of how long the player has been in a certain actionstate. However, this actually does nothing on its own and is freely modifiable. It will not tic upward or downward unless specified by the scripter.

mo.player.actionrings = 10
The amount of rings your character's special action costs. This number will show up in the HUD if the number is greater than 0.

mo.player.disableringslinger = true
This prevents players from being able to fire rings. This is usually not needed in scripts since BattleMod already sets the variable to true on skin load. However, some characters, like Fang, may need this to be manually set to "false" for whatever reason, so I've included it here for posterity.

mo.player.spendrings = 1
This signals to BattleMod that we need to spend rings. If this is set to 1, the game will play a sound and subtract mo.player.actionrings from the player's current ring amount after the character's action has been performed.

mo.player.actioncooldown = TICRATE
This constantly tics down to 0 and is used for regulating player actions. doaction will always be -1 or 0 if mo.player.actioncooldown is greater than 0.

mo.player.spendrings = -1
This signals to BattleMod that the player attempted and failed to perform an action. If set to -1, the game will play a sound effect in celebration of the player's failure.


Other notes:
If you're not feeling up to the task of making a new special ability, you can easily use one of the pre-existing abilities for the six vanilla characters with the following block of code:
Code:
local BattleFuncSet = false

addHook("ThinkFrame",function()
	if not(BattleFuncSet) and CBW_Battle and CBW_Battle.ActionChar then
		BattleFuncSet = true
		CBW_Battle.ActionChar["eggrobo"] = CBW_Battle.ActionChar["tails"]
	end
end)
It's as simple as that! This will make it so that the skin "EggRobo" performs Tails' special ability, which summons a buzz sentry.


Egg Robo Tag
Need to make sure a character's lua script isn't conflicting with BattleMod's tagmode? Check to make sure either mo.player.iseggrobo or CBW_BattleMod and mo.player.pflags&PF_TAGIT do not return true before running the script. This won't be necessary for ActionChar[] scripts, but it may be helpful in ensuring compatibility with your characters' other, more generalized lua scripts.



Spoiler: Special Thanks

Toaster and DrTapeworm, for creating the EggRobo sprites
SuperPhanto, for creating EggRobo's gun and laser sprites
Many of the folks in SRB2 Discord #scripting for advice and troubleshooting support
Everyone on the Master Server who helped to test this and provide feedback while it was in beta

Download Now

File Type: pk3 VL_BattleMod-v1.1.pk3 (103.7 KB, 387 views)
File Type: pk3 VL_BattleMod-v2.pk3 (112.9 KB, 163 views)

Screenshots

Click image for larger version

Name:	action_amy1.gif
Views:	3408
Size:	3.55 MB
ID:	26444   Click image for larger version

Name:	action_amy2.gif
Views:	3348
Size:	1.85 MB
ID:	26445   Click image for larger version

Name:	action_knuckles1.gif
Views:	3381
Size:	3.68 MB
ID:	26446   Click image for larger version

Name:	action_knuckles2.gif
Views:	3398
Size:	5.27 MB
ID:	26447   Click image for larger version

Name:	action_sonic.gif
Views:	3436
Size:	6.18 MB
ID:	26448  

Click image for larger version

Name:	action_tails1.gif
Views:	3373
Size:	2.90 MB
ID:	26449   Click image for larger version

Name:	action_tails2.gif
Views:	3396
Size:	4.02 MB
ID:	26450   Click image for larger version

Name:	backdraftboost.gif
Views:	3367
Size:	4.07 MB
ID:	26451   Click image for larger version

Name:	collide_demo.gif
Views:	3384
Size:	2.40 MB
ID:	26452   Click image for larger version

Name:	eggrobotag1.gif
Views:	3377
Size:	5.26 MB
ID:	26453  

Click image for larger version

Name:	eggrobotagdemo.gif
Views:	3343
Size:	3.39 MB
ID:	26454   Click image for larger version

Name:	kingpanelbrawl1.gif
Views:	3396
Size:	2.85 MB
ID:	26455   Click image for larger version

Name:	kingpaneldemo.gif
Views:	3466
Size:	6.19 MB
ID:	26456   Click image for larger version

Name:	misc1.gif
Views:	3374
Size:	4.74 MB
ID:	26457   Click image for larger version

Name:	misc2.gif
Views:	3456
Size:	7.76 MB
ID:	26458  

Click image for larger version

Name:	misc3.gif
Views:	3387
Size:	4.86 MB
ID:	26459   Click image for larger version

Name:	spectatorflicky.gif
Views:	3360
Size:	5.65 MB
ID:	26460   Click image for larger version

Name:	action_metal3.gif
Views:	3390
Size:	7.02 MB
ID:	26461   Click image for larger version

Name:	action_fang2.gif
Views:	3407
Size:	7.71 MB
ID:	26462  

Supporters / CoAuthors

Show Your Support

  • This addon may not be copied, reproduced or published elsewhere without the author's permission.

Comments
Old 2 Weeks Ago   #2
Whackjood
The unreliable joodge
Judge
 
Whackjood's Avatar
Default

This looks promising and I'll see about testing it in a netgame tomorrow! But all promotional images in the opening post need to be uploaded as message board attachments instead of being hosted in an external site such as imgur.

Additionally, your rar file contains a single pk3 file, which is already compressed and doesn't need to be contained in a rar.

I will look at this when I can though!
__________________
Meanwhile in Aerial Garden Zone
Whackjood is offline   Reply With Quote
Old 2 Weeks Ago   #3
CobaltBW
Community Noise Maker
Developer
 
CobaltBW's Avatar
Default

All files have been reuploaded.
__________________
~CobaltBW

Check out my soundcloud profile for music stuff
CobaltBW is offline   Reply With Quote
Old 2 Weeks Ago   #4
ManimiFire
Meow Motherfuckers.
 
ManimiFire's Avatar
Default

That looks phenomenal! I like these kind of modifications to the multiplayer game modes. I'll have a look on it when I can.
__________________
Check out my youtube channel: https://www.youtube.com/channel/UCd1...hUkNvNA93RPI8g
ManimiFire is offline   Reply With Quote
Old 2 Weeks Ago   #5
Chrispy
Developer
 
Chrispy's Avatar
Default

I gotta say this is a lot of fun and an interesting take on multiplayer! the match gameplay is very nicely paced, the fights for the control panel are intense while the time between panels are more relaxed. Has a very good flow of gameplay to it. The abilities between the characters feel very well balanced while also being in-character. I don't have any taste for ringslinger so if this were to become the default match I'd be more likely to play.
__________________
I'm just the guy that makes the Sonics
Chrispy is offline   Reply With Quote
Old 2 Weeks Ago   #6
Fres
oof
 
Fres's Avatar
Default

Now this is interesting.

I'm not really big on ringslinger anymore, so something like this seems like a nice change of pace! Gonna have fun trying this out!
__________________
Quote:
Originally Posted by GreenKnight9000 View Post
HOLY MCCHICKEN FLAVOURED TITTY SPRINKLES
Fres is offline   Reply With Quote
Old 2 Weeks Ago   #7
MK.exe
The one and only!
 
MK.exe's Avatar
Default

Oh sweet the finally release! Great stuff
__________________
Average
MK.exe is offline   Reply With Quote
Old 2 Weeks Ago   #8
RomioTheBadass
PK3 Fetishist
Default

Neat, going to give this a shot later today, although I admit I'm going to miss weapon rings and the first-person view.
__________________
Also known as "RTB" on Discord

Sonic 3D Ass: Horrible camera island.
RomioTheBadass is offline   Reply With Quote
Old 2 Weeks Ago   #9
Rumia1
Backseat Developer
 
Rumia1's Avatar
Default

I really had a lot of fun with this in CTF! The new abilities are wild and unique. This fits my playstyle a lot more than vanilla CTF does so it feels a lot better. I would however like to make a suggestion that if friendlyfire is turned on, the physical attacks would be carried over to other gametypes like Race and Competition.
__________________
Quote:
Originally Posted by Cirno
Egguman-senpai...
Rumia1 is offline   Reply With Quote
Old 2 Weeks Ago   #10
Puppyfaic
 
Puppyfaic's Avatar
Default

and thus, PVP modes were saved forever.

i'd say the only thing that could make this better is actual map design itself, which is obviously not something a gameplay-only mod can touch. though you did somewhat attempt this with your re-purposing of weapon panels, it's not immediately clear that they give score due to the fact that you didn't change their graphics, so it still looks like they should award you their respective weapon rings.
Puppyfaic is offline   Reply With Quote
Old 2 Weeks Ago   #11
Spectorious
Certified synth whore
 
Spectorious's Avatar
Default

This was honestly super fun to test! Definitely a hell of a lot more engaging than default ringslinger.

As this time around for Match and Team Match at least, there's an actual objective that encourages and rewards quick thinking, good team composition and good team coordination. Super glad you were able to pump this out, hopefully this'll show up on some MS servers for a good while going forwards!
__________________
Insert something totally interesting here
Spectorious is offline   Reply With Quote
Old 2 Weeks Ago   #12
CobaltBW
Community Noise Maker
Developer
 
CobaltBW's Avatar
Default

Quote:
Originally Posted by Rumia1 View Post
I would however like to make a suggestion that if friendlyfire is turned on, the physical attacks would be carried over to other gametypes like Race and Competition.
I tried having collision on during test runs, but I found that the spawns and certain other bottlenecks of the map design end up making race feel degenerative and claustrophobic. I think having a race with melee combat enabled would work a lot better with maps specifically designed to accomodate for those abilities.
__________________
~CobaltBW

Check out my soundcloud profile for music stuff
CobaltBW is offline   Reply With Quote
Old 2 Weeks Ago   #13
SeventhSentinel
Social Media Manager
Developer
 
SeventhSentinel's Avatar
Default

Ringslinger was never good. This on the other hand is pretty great. My small brain kept trying to use the fire button to shoot using the active weapon panel, but once I played enough, I started to understand how things worked. I tried Sonic and Amy; I couldn't seem to do anything productive as Sonic, but knocking people off the Auto Ring platform in that THZ-inspired stage? Priceless. Best multiplayer experience I've ever had in SRB2. Good show.
__________________
FM synths forever
SoundCloud / Twitch / Twitter
SeventhSentinel is offline   Reply With Quote
Old 2 Weeks Ago   #14
Rumia1
Backseat Developer
 
Rumia1's Avatar
Default

Quote:
Originally Posted by CobaltBW View Post
I tried having collision on during test runs, but I found that the spawns and certain other bottlenecks of the map design end up making race feel degenerative and claustrophobic. I think having a race with melee combat enabled would work a lot better with maps specifically designed to accomodate for those abilities.
Maybe I'm just one of those people who enjoys having a degenerative and claustrophobic race experience. From my experience playing in 2.1 with PhysAttack.lua and Collide.lua loaded, people ignored each other for the most part and went for the goal but it was still hillarious to me when people would get knocked out of the way or killed at a crucial moment. I love chaos in these sorts of gamemodes.
__________________
Quote:
Originally Posted by Cirno
Egguman-senpai...
Rumia1 is offline   Reply With Quote
Old 2 Weeks Ago   #15
Whackjood
The unreliable joodge
Judge
 
Whackjood's Avatar
Default

This is absolutely wild. I had a great time on trying out a few rounds of this. Have you considered making Fang's bombs team colored though for team game modes? Right now if I see a bomb in the middle of a team fight I have no idea whose side it belongs to until it explodes. (Similarly, this extends to Elemental shield flame trails. But that was an issue in vanilla SRB2's team game modes as well)
__________________
Meanwhile in Aerial Garden Zone
Whackjood is offline   Reply With Quote
Old 2 Weeks Ago   #16
Krabs
 
Krabs's Avatar
Default

I've gotten to play it for only a small bit of time but holy crap is this fun. Since the weapon rings are completely different in function, it might be a good idea to use emeralds or emblems as the sprite instead.
Krabs is offline   Reply With Quote
Old 2 Weeks Ago   #17
CobaltBW
Community Noise Maker
Developer
 
CobaltBW's Avatar
Default

Quote:
Originally Posted by Whackjood View Post
This is absolutely wild. I had a great time on trying out a few rounds of this. Have you considered making Fang's bombs team colored though for team game modes? Right now if I see a bomb in the middle of a team fight I have no idea whose side it belongs to until it explodes. (Similarly, this extends to Elemental shield flame trails. But that was an issue in vanilla SRB2's team game modes as well)
I actually did think of that offhand, but it totally slipped my mind. I'll work it into the next update.
__________________
~CobaltBW

Check out my soundcloud profile for music stuff
CobaltBW is offline   Reply With Quote
Old 2 Weeks Ago   #18
little guy*
 
little guy*'s Avatar
Default

Wow, this is fun! I helped beta test it (I can only remember one error) and I'm glad I did. This is now my favorite way to play multiplayer games that use ringslinger.
__________________
Should I put something here?


Just playing 2.2!
little guy* is offline   Reply With Quote
Old 2 Weeks Ago   #19
Krabs
 
Krabs's Avatar
Default

Just played it for a few hours in a couple different servers with varying playercounts. It's freaking fantastic, but still needs work. Here's my detailed thoughts:

Spoiler: Character abilities
I really dislike the autoaim mechanic and prefer it off, especially for metal. Since everyone's running around so fast, being unable to lead your shots makes combat really difficult.

Speaking of metal, I tend to never use his charged shot, and only ever use the minimum charge, fast shot. The ability to fire such a big beam with a simple tap is good enough to win fights alone, so charging it feels a bit worthless. I also feel like being able to aim upwards shouldn't be possible, since it's not easy to aim in third person.

Amy's shrink ray is fun, although I think it's a bit silly that she runs faster than the beam travels. Perhaps the duration of the shrink is a bit long.

Knuckles seems like the best defensive character, and his ability is pretty cool. I think, in order to make him less of a one-trick pony, the minimum digging time should be shorter in exchange for less rocks, allowing the move to be used in more situations than just panel/flag defense. Unfortunately his sluggish glide landing animation from vanilla just makes him unfun to move around with.

Fang feels incredibly defensive as well, since his bombs have a long cooldown and are somewhat precise to land direct hits with, so usually I end up spamming them in tight corridors. He's just not as fun to use since it feels like i'm crossing my fingers whenever I attack with him.

Tails's ability feels kind of unsatisfying to use since it's pretty automatic. Perhaps a targeting reticle would be more fun to use? It's really fun to fight *against* tails, though, since his attack is strong but also telegraphed.


Spoiler: Match / Team Match
Personally, I feel like the whole weapon panel system isn't the best solution to make match more interesting. Since every player tends to swarm around the panel, the best strategy is to try and snipe the panel when the timer is very close to hitting 0, which is easily done using knuckles' digging ability. I don't want to sound too harsh, but I think the way it is now this mode is almost luck based. Even then, it's really fun fighting all the different characters in this mode when the panels aren't around.


Spoiler: Tag
No gripes here. It's incredibly fun and using the egg robo is a blast too.


Spoiler: CTF
I'm not sure leaving CTF as-is was the best idea - removing weapon rings inherently makes it more difficult to attack people in general. Because of this, flag carriers seemed very very difficult to catch. Still, it's really fun using all the character abilities in tandem with each other to set up a defensive wall.
Krabs is offline   Reply With Quote
Old 2 Weeks Ago   #20
Rumia1
Backseat Developer
 
Rumia1's Avatar
Default

I'd like to suggest that Tails' sentry have less startup time for attacking things, I have a hard time getting it to do anything useful outside of just popping monitors as I run by and hitting stationary foes.
I'd also like to suggest that an arrow pop up over the head of who/whatever's being targeted
__________________
Quote:
Originally Posted by Cirno
Egguman-senpai...

Last edited by Rumia1; 2 Weeks Ago at 07:21 AM.
Rumia1 is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:21 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.