Jump to content

[CSGO] AIM_Six_Arenas and spinoffs (1v1 multi arena with a twist)


Recommended Posts

aim_six_arenas.jpg.f8657b08b01c4a75f69ee15b6675cbdf.jpg

Original Map (AIM_Six_Arenas) Downloads:

Spinoffs:

After several weeks of works, I would like to present to everyone my take on 1v1 multi arena: AIM_Six_Arenas. The map features six 1v1 arenas connected by a hallway. For the first 20 seconds of each round, though, arena doors are locked, forcing players into 1v1 matchups. After 20 seconds, the doors to each arena will unlock, allowing players to use the connecting hallway to hunt down other players. You can and should use the radar to determine where remaining enemies are located.

As there is only one door into each arena, I gave players the ability to teleport directly into an arena, potentially bypassing anyone camping at the door. However, there is a two second delay before you can teleport, so you can't simply use the teleporter to cheaply run away from enemies in the hallway. Also, to reduce the amount of searching after the doors are unlocked, there are indicators in the hallway showing which arenas are currently occupied.

This map also has random sets of weapons each round. The matchups are:

  • USP-S vs. Glocks
  • Five-Seven vs. Tec-9
  • Mag-7 vs. Sawed-off
  • MP9 vs Mac-10
  • Famas vs. Galil
  • M4 vs. AK47
  • AUG vs. SG 553

Credits:

I also plan on releasing several spinoff maps based off of this map, with individual maps based on the arenas, as well as a more traditional 1v1 multi arena map compatible with the 1v1 plugin.

And now screenshots of the six arenas, as well the connecting hallway:

Spoiler

 

20210105162551_1.jpg

20210105162601_1.jpg

20210105162639_1.jpg

20210105162700_1.jpg

20210105162715_1.jpg

20210105162742_1.jpg

20210105162949_1.jpg

 

 

 

 

Edited by sn0wsh00
Spoilers, wording, spinoffs
Link to post
Share on other sites
Posted (edited)

As I said at the top, there will be several spinoff maps of aim_six_arenas. In fact, I've already released one that's compatible with Arms Race, Demolition and Deathmatch, AR_Six_Arenas:

This spinoff removes AIM_Six_Arenas' game_player_equip entity, due to that entity causing CS:GO to crash in Arms Race and Demolition modes. While this map was originally designed for those aforementioned modes, it is still playable in casual/competitive modes, where, instead of randomly preselected weapons, players use buyzones to get guns. In other words, if you ever wondered how 1v1 multi arena would play out with buyzones, this map is kind of for you.

Other than that, this map identical to the original, hence no screenshots. For the first 20 seconds, the arena doors are locked, forcing players into 1v1 matchups. After 20 seconds (15 seconds after the end of freeze time), the doors will unlock, allowing players to use the hallway connecting the arenas to hunt down surviving enemies.

 

Edited by sn0wsh00
wording
Link to post
Share on other sites

800521868_aim_showdown_planet_thumbcompressed.jpg.d54991f875f041022227a40075e86004.jpg

After a few weeks of work, I'll like to present my second aim_six_arenas spinoff map: Showdown Planet

Download:

Like with aim_six_arenas, the game starts off as a series of six 1v1 duels. After 30 seconds, though, instead of doors unlocking to an interconnecting hallway, all surviving players get teleported to a seventh arena for a final showdown. Also, unlike in the original map, which mean to be a collection of six soundstages at a building complex, the six arenas on this map are meant to represent different locations on earth, which means the arenas in this spinoff are far more detailed than their aim_six_arenas counterparts. You can take a look at some comparison GIFs I made here.

The initial six arena themes and weapon matchups remain the same, but Showdown Planet adds two new arenas to serve as the seventh arena. One arena is a hallway undergoing renovations, based off of aim_six_arenas' hallway. The other arena is a remake of the classic aim_map, this time set in space. The map randomly chooses between these two new arenas to serve as the seventh arena. This map supports up to 24 players, depending on game mode, which allows for 2v2 matchups in the initial arenas.

Thanks to the wonders of Vscript, I've managed to make Showdown Planet play differently depending on gamemode:

  • Competitive: Random weapons, limited to 12 players. Highly recommended if you only want to play 1v1 in the 6 arenas
  • Custom: Random weapons, allows up to 24 players
  • Casual: Buyzones, allows up to 24 players
  • Demolition/Flying Scoutsman: Normal gameplay, allows up to 24 players.

Credits

Edited by sn0wsh00
corrected link
Link to post
Share on other sites

And for those who were wondering, here's the VScript code I used to enable random weapons in only specific modes (shoutout again to @Kokopelli for writing the original script):

	function FixGameMode()
{
       local nMode = ScriptGetGameMode();
       local nType = ScriptGetGameType();
       local nRounds = ScriptGetRoundsPlayed();
	    if (nMode == 0 && nType == 3)
    {
    EntFire("buyzone_trigger", "Disable", 0, 0);
    if (nRounds == 0)
    {
    SendToConsole("mp_respawn_immunitytime 0; mp_roundtime 3; mp_maxrounds 30; mp_warmuptime 1; mp_timelimit 0; bot_chatter normal; mp_friendlyfire 1; ff_damage_reduction_bullets 0; ff_damage_reduction_other 0; mp_randomspawn 0; bot_quota_mode fill");
    }    
    EntFire("wep_spawn_t", "Enable", 0, 0);    
    EntFire("wep_spawn_ct", "Enable", 0, 0);
    EntFire("spawn_1", "SetEnabled", 0, 0);        
                                        // custom. Random weapons, allows up to 24 players
    }
	    if (nMode == 1 && nType == 0)
    {
    
    EntFire("buyzone_trigger", "Disable", 0, 0);        
    EntFire("wep_spawn_t", "Enable", 0, 0);    
    EntFire("wep_spawn_ct", "Enable", 0, 0);
    EntFire("spawn_1", "SetDisabled", 0, 0);        
    SendToConsole("mp_warmuptime 1; bot_quota_mode normal");
	
                                    // competitive. Random weapons, limit to 12 players
    }
	    if (nMode == 0 && nType == 1)
    {
    EntFire("wep_spawn_t", "Disable", 0, 0);    
    EntFire("wep_spawn_ct", "Disable", 0, 0);    
	                                    // arms race
	    }
	    if (nMode == 1 && nType == 1)
    {
    EntFire("wep_spawn_t", "Disable", 0, 0);    
    EntFire("wep_spawn_ct", "Disable", 0, 0);    
    EntFire("spawn_1", "SetEnabled", 0, 0);    
                                    // demolition
    }
	    if (nMode == 0 && nType == 0)
    {
	    EntFire("wep_spawn_t", "Disable", 0, 0);    
    EntFire("wep_spawn_ct", "Disable", 0, 0);    
    EntFire("spawn_1", "SetEnabled", 0, 0);    
                                    // casual. Buyzones, allows up to 24 players.
    }
	    if (nMode == 2 && nType == 1)
    {
    EntFire("wep_spawn_t", "Disable", 0, 0);    
    EntFire("wep_spawn_ct", "Disable", 0, 0);    
    
                                    // deathmatch
    }
	    if (nMode == 2 && nType == 0)
    {    
    EntFire("wep_spawn_t", "Disable", 0, 0);    
    EntFire("wep_spawn_ct", "Disable", 0, 0);    
                                    // wingman
    }
}
	

 

I'm pretty sure there's a lot of lines that are unnecessary in my script, but hey, this was my first attempt at VScript.

Also, unless I completely screwed up my CFG files, I think all the default settings for custom gamemode are just horrible! It's like if deathmatch elements (time limits, buy time immunity) somehow got mixed up with competitive mode (solid players, spectate only own team etc.). Huge shame map specific CFG files don't work anymore.

Edited by sn0wsh00
formatting
Link to post
Share on other sites
  • 1 month later...
Posted (edited)

I recently released another spinoff of AIM_Six_Arenas, this time a de_cache themed arena called Munitions Cache (am_munitions_cache). You can download this map at the following links:

The thing about Munitions Cache is that the main area is very similar to de_cache's 1v1 warmup arena. In turn, I thought it would be a great map to add secrets to. The first secret is a short obstacle course with round-to-round variations that you have to complete in 60 seconds. The secret is a Monty Hall problem simulator, created using only logic entities.

Here's a video demonstrating how the Monty Hall problem simulator works, as well as a logic path visualization:

And here's a video of me running 100 simulations:

And here's a video who want their simulations in Python chart format:

 

Edited by sn0wsh00
formatting
Link to post
Share on other sites
Posted (edited)

The process on how I made the Monty Hall problem simulator is pretty lengthy, so I'm going to create a separate post for this.

A challenge in creating a Monty Hall problem simulator is preventing the map from burning the same button the player picked during the first try. To do this, I made each button have a corresponding set of logic_branch, logic_compare and math_counter entities . The logic_branches tells the map which button is eligible to be burned after the first press, while the logic_compares determines whether or not the player used a safe button (i.e. the button that will open the door) during the second press (each button's corresponding math_counter entity also only activate during the second press). Both logic_branch and logic_compress have initial values of 1, while the logic_compare also has a compare value of 1.

At the start of each round, the map, via a logic_case, chooses which button will be the button that'll open the door by disabling a button's corresponding logic_branch and logic_compare entities. To disable these entities, the map sets logic_branch's initial value to 0 and logic_compare's compare value (which, remember, is separate from logic_compare's initial value) to 0 (false).

When a player uses a button during the first press, the button will do three things: add 1 to an overall math_counter entity (which I will name press_1st_counter), add 1 to the button's corresponding math_counter entity and disable (i.e. sets false) the button's corresponding logic_branch. If a player presses the door-opening button for the first press, then there will be no corresponding logic_branch entity to disable. Press_1st_counter has a maximum legal value of 1 and only activates when the first press (and only the first press) occurs.

After Press_1st_counter reaches is max value (i.e. 1), Press_1st_counter sends out a Test output to the logic_branch entities. When the logic_branches receive the Test input from Press_1st_counter, all logic_branches whose value are still true will send an AddOutput command to an empty logic_case entity. These AddOutput commands add cases to the empty logic_case entity, essentially building a logic_case from scratch. You can see how the Output tab for one of the logic_branches look like below:

594511713_Logic_branchoutputs.jpg.b639a8f01827172d91aa28778f8e0eeb.jpg

With a newly assembled logic_case entity, we can now send a PickRandom command from the button to that formerly empty logic_case entity, the later then randomly choosing a button to ignite. Because the logic_branch entity corresponding with the first picked button did not send an AddOutput command (due to it being false) to the empty logic_case entity, the map will never choose to ignite the button the player pressed on the first attempt.

Making the second press work is much simpler than the first press. Recall that each button has a corresponding math_counter that only activates on the second press, and that the map had set the safe button's logic_compare compare value (NOT the initial value) to 0. On the second press, the button's corresponding math_counter entity sets the logic_compare's initial value to 0 and then compares the initial value to the compare value. If they are equal, logic_compare will open the door. Otherwise, logic_compare sets the button on fire.

Edited by sn0wsh00
wording
Link to post
Share on other sites
Posted (edited)

For the spinoff of aim_six_arenas' jungle room, I created a random path generator thing inspired by Payday 2's Diamond Heist puzzle:

Map download (am_jungle_pit):

This generator was created using math_counter, func_door and logic_case entities, with the func_door platforms arranged in a 5x7 grid (5 columns, 7 rows). The path will always move straight in rows 1, 4 and 7. In rows 2, 3, 5 and 6, on the other hand, the path can move either left, right or straight. If path moves right or left in row 2, the path in row 3 will move the same direction in row 2. Same concept applies to rows 5 or 6.

The math_counter entities raise the func_door platforms when they reach the max value, and they also activate corresponding logic_case entities. The logic_case entities present cases that either causes the path to continue going left or right, or to go to the next row on the grid. In rows 2, 3, 5 and 6, each platform has two corresponding math_counters. One set of math_counter are used when the path is going right, while the other set of math_counter entities are used when the path is traveling left. Within these rows, platforms in column 2 through 4 also have two corresponding logic_case entities, while the platforms in the outer 2 columns have 1 corresponding logic_case entity. Like with the math_counter entities, one set of logic_case entities are used when the path is going right, while the other set of logic_case entities are used when the path is traveling left. Because the path can't travel anymore left or right in columns 1 and 5 respectively, only a single logic_case entity is needed for platforms in those columns (e.g. if a path in row 2 is traveling right, when it reaches column 5, the only thing the path can do is move onto row 3).

Here's a screenshot from Hammer showing off how I arranged the entities:

Clipboard01.jpg.98fc681ff4c2daed85d4fba828fa80a1.jpg

 

 

Edited by sn0wsh00
links
Link to post
Share on other sites
Posted (edited)

For the final spinoff map, I decided to create a custom terrain for the 3D skybox with the help of World Machine:
 

Spoiler

 

20210328125634_1.jpg.cfc11a5f00e9fdf33f3dc8bb163d3928.jpg

20210328125622_1.jpg.ac0b1b6d17f52b538dd1dc5acd356a78.jpg

161652693_1(2).jpg.94d4a85e9457838e49b402fa2f34fadc.jpg

1293391413_1(1).jpg.1d08dc301d21bbd398d129ef725907a7.jpg

 

Map download (am_frozen_fortress):

The heightmap and texture image for this terrain was created in World Machine, while Twister was used to convert the heightmap to displacements. In Twister, the settings I used were a length and width of 8192, a height of 3072, a power of 3 and a displace resolution of 16 (256 tiles total).

And here was how my logic chart looked like when I created the heightmaps and textures (only the "Outputs with snow" outputs were used):
 

Spoiler

 

Clipboard01.png.fe52de497496975065f0e76d808b5df9.png

 

 

 

 

Edited by sn0wsh00
link
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...