Tiny 2.1 Preview

Status
Not open for further replies.
So will there also be new CTF, Match, Race stages? If so will they be based on the good contest maps, or maps the SRB2 team made? I can't wait to see 2.1.
 
They will be based on the good OLDC maps from the past few months. I don't think the team made any new ones for this version.
 
Heres a random question, will 2.0 levels and mods work with 2.1 or do they have to be changed for them to work?
 
As usual with every update we do, SOCs will break. There aren't any dramatic changes to anything else, though, so levels and characters should operate fine without modification.
 
News levels based on the OLDC levels, ok. Have you already found what levels add ? If so, can we have names ? (And how many levels you will add ...)
 
As usual with every update we do, SOCs will break.
I'm rather happy to say that after 2.1, this won't be quite given anymore. We've more-or-less taken the necessity of dealing with slot numbers and kicked it to the curb. SRB2 vanilla resources - states, objects, sprites, sounds, and flags - can now be referred to explicitly by name instead of slot number. When SRB2 updates and the slots switch around in future versions, or even in EXE modifications of 2.1, name references will remain correct.

Furthermore, you can give names to freeslot states and objects; when a freeslot resource name is declared(in the new FREESLOT block of mainCFG), that name is then assigned the next available free slot. This not only means that you won't have to change slot numbers for SOCs that use freeslots between versions, but that save for an instance in which the exact same name is used twice, SOCs will no longer be susceptible to state and object slot conflicts.

Finally, in part to facilitate the continued use of actions that require upper and lower 16 bits for multiple variables, you are now able to perform mathematical operations in (formerly) numbered fields. Addition, subtraction, multiplication, division, and bitshifts are currently supported, though at the time of writing they do not follow the proper order of operations. Special names are also available for referring to specific numbers, such as FRACUNIT(65536, or 2^16), and TICRATE(35, number of tics in a second).

With all said and done, here's an example of the system in practice, starting with a 2.0.6-compatible SOC; A test wad showing the 2.0.6 version is also attached to the post.

Code:
# Helix-shooter scenery object; 2.0.6 version

# Everything on a line after an # is a comment and is not executed as SOC code.

# This SOC makes a rotating double-helix with one cross with the top at 768
# when mapthing number 3575 is placed at a height of 334 from the ground.
# Stick it in a glass tube for scenery!


# MT_SoftAxis
#  Object that exists so MT_HelixShooter can rotate around it.
Thing 400
MAPTHINGNUM = 3575
SPAWNSTATE = 2300
SPAWNHEALTH = 1000
REACTIONTIME = 8
DEATHSTATE = 1615
SPEED = 655360
MASS = 100
DAMAGE = 1
FLAGS = 4624
# [Flags: NoBlockmap, NoGravity, NoClip]


# MT_HelixShooter
#  Rotates/flickers around softaxis and shoots HelixBullets at it.
Thing 401
MAPTHINGNUM = 3576
SPAWNSTATE = 2301
SPAWNHEALTH = 1000
REACTIONTIME = 8
DEATHSTATE = 1615
SPEED = 655360
MASS = 100
DAMAGE = 1
FLAGS = 4608
# [Flags: NoGravity, Noclip]


# MT_HelixBullet
#  The projectiles that make up the helix thing.
Thing 402
MAPTHINGNUM = -1
SPAWNSTATE = 2305
SPAWNHEALTH = 1000
SEESTATE = 0
SEESOUND = 0
REACTIONTIME = 8
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = 0
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = 0
DEATHSOUND = 0
XDEATHSTATE = 0
SPEED = 1310720
RADIUS = 720896
HEIGHT = 524288
MASS = 100
DAMAGE = 20
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = 66064
# [Flags: NoBlockmap, NoGravity, Missile]


# SoftAxis - [Spawn] Floats in place and plays ambient laser sound with object as source. WIP timing.
FRAME 2300
SPRITENUMBER = 118
SPRITESUBNUMBER = 0
DURATION = 35
NEXT = 2300
ACTION A_PlaySound
VAR1 = 86
VAR2 = 1



# HelixShooter1 - [Spawn] Can't act on map load, waits a tic before doing anything.
FRAME 2301
SPRITENUMBER = 187
SPRITESUBNUMBER = 0
DURATION = 1
NEXT = 2302
ACTION None

# HelixShooter2 - Sets nearest SoftAxis to HelixShooter's target.
FRAME 2302
SPRITENUMBER = 187
SPRITESUBNUMBER = 0
DURATION = 1
NEXT = 2303
ACTION A_FindTarget
Var1 = 400
Var2 = 0

# HelixShooter3 - Rotates around target SoftAxis.
FRAME 2303
SPRITENUMBER = 187
SPRITESUBNUMBER = 0
DURATION = 1
NEXT = 2304
ACTION A_RotateSpikeBall

# HelixShooter4 - Fires a helix bullet from 384 fracunits above target softaxis. Also causes flickering. (subtract 48 from total displacement)
FRAME 2304
SPRITENUMBER = 187
SPRITESUBNUMBER = 0
DURATION = 0
NEXT = 2303
ACTION A_FireShot
VAR1 = 402
VAR2 = 336
# {Next: HelixShooter3}



# HelixBullet - [Spawn] Just flies in a straight line like an ordinary projectile.
FRAME 2305
SPRITENUMBER = 78
SPRITESUBNUMBER = 32768
DURATION = -1
NEXT = 2305
ACTION None
And now, that same SOC converted to the current private version of SRB2:
Code:
# Helix-shooter scenery object; trunk version

# Everything on a line starting with # is a comment and is not executed as SOC code.

# This SOC makes a rotating double-helix with one cross with the top at 768
# when mapthing number 3575 is placed at a height of 334 from the ground.
# Stick it in a glass tube for scenery!

# DECLARE assigns freeslots to each new mobj and state name.
# Uses of these names in the SOC are wrappers for the automatically assigned
# slot numbers. Prefixes are used here, and in the SOC so SRB2 knows if it is
# a state or object that is being named.
 
FREESLOT
MT_SOFTAXIS
MT_HELIXSHOOTER
MT_HELIXBULLET
S_SOFTAXIS
S_HELIXSHOOTER1
S_HELIXSHOOTER2
S_HELIXSHOOTER3
S_HELIXSHOOTER4
S_HELIXBULLET

#  Object that exists so MT_HELIXSHOOTER can rotate around it.
THING MT_SOFTAXIS
MAPTHINGNUM = 3575
SPAWNSTATE = S_SOFTAXIS
SPAWNHEALTH = 1000
REACTIONTIME = 8
DEATHSTATE = S_DISS
SPEED = 10*FRACUNIT
MASS = 100
DAMAGE = 1
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP

#  Rotates/flickers around target softaxis and shoots HelixBullets at it.
THING MT_HELIXSHOOTER
MAPTHINGNUM = 3576
SPAWNSTATE = S_HELIXSHOOTER1
SPAWNHEALTH = 1000
REACTIONTIME = 8
DEATHSTATE = S_DISS
SPEED = 10*FRACUNIT
MASS = 100
DAMAGE = 1
FLAGS = MF_NOGRAVITY|MF_NOCLIP

#  The projectiles that make up the helix thing.
THING MT_HELIXBULLET
MAPTHINGNUM = -1
SPAWNSTATE = S_HELIXBULLET
SPAWNHEALTH = 1000
SEESTATE = S_NULL
SEESOUND = SFX_NONE
REACTIONTIME = 8
ATTACKSOUND = SFX_NONE
PAINSTATE = S_NULL
PAINCHANCE = 0
PAINSOUND = SFX_NONE
MELEESTATE = S_NULL
MISSILESTATE = S_NULL
DEATHSTATE = S_NULL
DEATHSOUND = SFX_NONE
XDEATHSTATE = S_NULL
SPEED = 20*FRACUNIT
RADIUS = 11*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
DAMAGE = 20
ACTIVESOUND = SFX_NONE
RAISESTATE = S_NULL
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE

# [Spawn] Floats in place and plays ambient laser sound with object as source.  WIP Timing. VAR1 has SFX_ in the name so SRB2 knows VAR1 is referring to a sound.
FRAME S_SOFTAXIS
SPRITENAME = SSPK
SPRITEFRAME = A
DURATION = TICRATE
NEXT = S_SOFTAXIS
ACTION A_PlaySound
VAR1 = SFX_LASER
VAR2 = 1

# [Spawn] Can't act on map load, waits a tic before doing anything.
FRAME S_HELIXSHOOTER1
SPRITENAME = HOOP
SPRITEFRAME = A
DURATION = 1
NEXT = S_HELIXSHOOTER2
ACTION None

# Sets nearest SoftAxis to HelixShooter's target; VAR1 says "MT_"SOFTAXIS so SRB2 knows I'm talking about a mobj
FRAME S_HELIXSHOOTER2
SPRITENAME = HOOP
SPRITEFRAME = A
DURATION = 50
NEXT = S_HELIXSHOOTER3
ACTION A_FindTarget
Var1 = MT_SOFTAXIS
Var2 = 0

# Rotates around target SoftAxis.
FRAME S_HELIXSHOOTER3
SPRITENAME = HOOP
SPRITEFRAME = A
DURATION = 1
NEXT = S_HELIXSHOOTER4
ACTION A_RotateSpikeBall

# Fires a helix bullet from 384 fracunits above target softaxis. Also causes flickering. (subtract 48 from total displacement)
FRAME S_HELIXSHOOTER4
SPRITENAME = HOOP
SPRITEFRAME = A
DURATION = 0
NEXT = S_HELIXSHOOTER3
ACTION A_FireShot
VAR1 = MT_HELIXBULLET
VAR2 = 384-48

# [Spawn] Just flies in a straight line like an ordinary projectile.
FRAME S_HELIXBULLET
SPRITENAME = MISL
SPRITEFRAME = A+FF_FULLBRIGHT
DURATION = -1
NEXT = S_HELIXBULLET
ACTION None
On the technical side of things, it should be explained that slot numbers still exist, and you are still using them in a fashion; when SRB2 looks at a name, it interprets it as the slot number(or just number) that it represents. Ergo, they can be used in mathematical operations, or pretty much anywhere that requires a number. This also means that, in the unlikely event that you absolutely HAVE to use regular slot numbers in the SOC, you still can. (not that we expect there to be any reason why you'd want to.)
 

Attachments

  • scenery3.zip
    2 KB · Views: 280
Last edited:
The new monitors look too..square. They seem more like Sonic 1 monitors. I like Sonic 3 styled, but that's just my opinion.
 
May I suggest a slight (only slight) colourmap to THZ1 to be slightly darker and a bit orange to make it seem a tiny bit more like sunset?
 
I'm rather happy to say that after 2.1, this won't be quite given anymore. We've more-or-less taken the necessity of dealing with slot numbers and kicked it to the curb. SRB2 vanilla resources - states, objects, sprites, sounds, and flags - can now be referred to explicitly by name instead of slot number. When SRB2 updates and the slots switch around in future versions, or even in EXE modifications of 2.1, name references will remain correct.

Furthermore, you can give names to freeslot states and objects; when a freeslot resource name is declared(in the new FREESLOT block of mainCFG), that name is then assigned the next available free slot. This not only means that you won't have to change slot numbers for SOCs that use freeslots between versions, but that save for an instance in which the exact same name is used twice, SOCs will no longer be susceptible to state and object slot conflicts.

Finally, in part to facilitate the continued use of actions that require upper and lower 16 bits for multiple variables, you are now able to perform mathematical operations in (formerly) numbered fields. Addition, subtraction, multiplication, division, and bitshifts are currently supported, though at the time of writing they do not follow the proper order of operations. Special names are also available for referring to specific numbers, such as FRACUNIT(65536, or 2^16), and TICRATE(35, number of tics in a second).

year2000.jpg


It's like we're finally here.
 
I'm rather happy to say that after 2.1, this won't be quite given anymore. We've more-or-less taken the necessity of dealing with slot numbers and kicked it to the curb. SRB2 vanilla resources - states, objects, sprites, sounds, and flags - can now be referred to explicitly by name instead of slot number. When SRB2 updates and the slots switch around in future versions, or even in EXE modifications of 2.1, name references will remain correct.

Furthermore, you can give names to freeslot states and objects; when a freeslot resource name is declared(in the new FREESLOT block of mainCFG), that name is then assigned the next available free slot. This not only means that you won't have to change slot numbers for SOCs that use freeslots between versions, but that save for an instance in which the exact same name is used twice, SOCs will no longer be susceptible to state and object slot conflicts.

Finally, in part to facilitate the continued use of actions that require upper and lower 16 bits for multiple variables, you are now able to perform mathematical operations in (formerly) numbered fields. Addition, subtraction, multiplication, division, and bitshifts are currently supported, though at the time of writing they do not follow the proper order of operations. Special names are also available for referring to specific numbers, such as FRACUNIT(65536, or 2^16), and TICRATE(35, number of tics in a second).

...Woah, that'll be something fantastic to look forward to now. =O

That might encourage people like me to actually get around to having a go at making Custom SOCs for once. =D

(Congrats to whoever got this future feature actually working)
 
Nice to hear about socs but, You know some parts in ERZ where it flashes red? Could you PLEASE slow it down? It could give anyone a seizure.
I would be happy if you fixed it. Other than that, THZ looks very Eggman-like. Especially act 1.
 
Awesome preview and awesome ideas on the wiki :D

SRB2 is going to rule when it gets completed. It will surely be the best fangame out there, best Sonic online game, and one of the few fangames completed.
 
I can't wait for this update to be completed and play THZ and CEZ.

new multiplayer stages, a possible new shield and improved single player levels this is really exciting!

But the one thing I'm still going to hope for is that Castle Eggman Zone, Arid Desert Zone, and Red Volcano Zone will have their full 3 acts with bosses.
 
I can't wait for this update to be completed and play THZ and CEZ.

new multiplayer stages, a possible new shield and improved single player levels this is really exciting!

But the one thing I'm still going to hope for is that Castle Eggman Zone, Arid Desert Zone, and Red Volcano Zone will have their full 3 acts with bosses.

http://mb.srb2.org/showthread.php?t=36060
Here's more info on the upcoming update.

Oh and it's Arid CANYON Zone, not Arid Desert Zone.
 
Rageful (not really)

And now, that same SOC converted to the current private version of SRB2:
I find shameful and disrespectful and offensive the fact that such thing still resides in the private code.
 
I agree that it is going to be weird seeing THZ change after so long. To be honest, while I usually welcome change, I'm going to miss the green grass in THZ1. Proposed changes in THZ2 sound great though, and those SOC improvements sound awesome!
 
Last edited:
nights_ss.png

nightsce.png

You saw nothing.

this is going in here instead of the news topic to give the things posted before me more notice, as well
 
犬夜叉;718427 said:
nights_ss.png

nightsce.png

You saw nothing.

this is going in here instead of the news topic to give the things posted before me more notice, as well
Water on the ceiling! O_O!
among other things...
 
Last edited:
Status
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top