Arrange Mode

Ion Fury

3D Realms, creators of Duke Nukem 3D, Prey, and Max Payne, are excited to team up with Voidpoint to bring back the legendary Build Engine, famously known for classic first-person shooters like Duke Nukem 3D, Shadow Warrior, and Blood. Ion Fury is the real deal!

Hello gamers, it’s Max ‘oasiz’ Ylitalo on the keys once again and last I wrote about “3D in Build Engine and Ion Fury” some years back. This time I’ll be writing a few more entries focusing on level design and some other bits related to it, starting with Arrange mode. While I started off as a mapper, I quickly found myself as the “lead level designer” on the project around 2016, doing a bit of everything on the side. As a mapper, I’m the effects guy. Coming from Duke3D mapping I’ve always had the interest on trying to push maps to do cool things and create unique game play scenarios. It’s not that different with Fury where I always try to think on how the mechanics can be pushed a little further with the existing tools available. Experimentation with these resulted in things like “Bombardier challenge” and “Queen of the hill”. This time I wanted to go back to something I already planned to include all the way in 2017 for the preview campaign, then called “B mode”. When designing a game, it's always about finding a right balance between skill, enemy introduction pacing and other gameplay beats. Even with the hardest skills intended for veteran players, you can’t just go full blast with all of the enemies, items and traps as you will want to gradually build up the intensity and roughly match the pacing of easier skills in terms of new elements. With Fury, on hardest skill you will get more enemies, more aggressive A.I. and a few key enemies get trickled in slightly earlier than the usual first encounters. However it’s all still designed to give you a mostly similar experience. While I believe we struck a nice balance overall with the main campaign, in some cases we had few spots where we had to look back and agree that some puzzles might confuse new players. With puzzles, any neat world hazard/puzzle you add will exist as a shared level script/geometry bit, affecting ALL skill levels. Outside of puzzles, there were also some enemies we didn’t want to introduce very early on regardless of skill, resulting in some enemy types getting barely any proper screen time. Many of these would work better during a replay. [img]{STEAM_CLAN_IMAGE}/32209318/7527617802bfd63399a01f68db7e97f3efdf7200.png[/img] [i]Early z1a4: generator puzzle used to be harder with underwater areas[/i] How to tell a replay apart? We at one point thought about having higher skills locked behind a “beat the game” wall but it’s not really nice for replays. Not only that but it would limit us mostly to enemy placement changes and we wanted more. It was time to dig up that “B mode” mentioned earlier… Our inspiration comes from older games where you’d finally beat the game (God gamer you!) and be getting ready to enjoy the ending... However instead of a conclusive end, you might’ve even got a very blunt and rewarding “Try again with a harder game!” message and it would usually just kick you back to a title screen with perhaps some secret code. Undeterred, you start the game again and all of a sudden you’d notice that the game would have changes to make it harder, different and sometimes going as far as modifying actual levels of the game to essentially give you a whole new second quest. This was often known with names such as “B game” “Hard mode” or “Second quest” and can be seen as a natural evolution of even older arcade games where you’d typically have 3-5 stage layouts that would keep repeating with a few tweaks to increase the difficulty each loop, designed to make you lose eventually. [img]{STEAM_CLAN_IMAGE}/32209318/8d4ef829f7513bf66e71fd80d538ad3004094aee.png[/img] [i](Left) Legend of Zelda NES — (Right) Kirby’s Dream Land GB[/i] Back when planning started, we dubbed ours "B-mode" and the game was to ship with just two skill levels and this alternate mode that was intended for replays, acting as a "medium+ & hard". As the game's development was pretty turbulent back in 2016-2017, we didn't even know if the preview campaign would be our swansong. But when we finally went with the EA model and decided to push with the full game, we focused our efforts on making the existing stuff work as well as possible and revisit this idea for the full game... That didn't really happen either :) I found some early planning sheets for the “end of level” screen that still included the 2 skills and A/B mode distinction. You can still recognize a few of these messages. [img]{STEAM_CLAN_IMAGE}/32209318/bb28d09eeb1c4fde43051266d1019681e937d313.png[/img] Now, “B mode”, let's try again.. The term “Arrange mode” was picked since it has a nice ring to it, playing homage to older Japanese games from the 80s and 90s where you’d often have arcade home ports that would try to replicate a vanilla experience but you’d in often have “ARRANGE” in the main menu that was essentially an added bonus mode could introduce changes to game play, graphics, music, stages and even story. All of this could be minor game play rule tweaks to full on “second quest” type experiences. These still spiritually live on in the form of DLCs and as various unlockable extras. In this context, our goal set out to be to provide a “second quest” type of experience that lets the player re-experience the vanilla campaign with new unexpected twists and also adding new game play elements to the mix. [b]Four key points ended up being[/b] - Increase challenge by remixing maps - Mirror flip the maps (the slow way) - Collectibles - Spice things up with Aftershock content for extra variety [b]INCREASE CHALLENGE BY REMIXING MAPS[/b] One great thing about a replay run is that we can expect the player to be familiar with some basic concepts like baton operated switches. We can assume that once a player reaches an area, the player already mostly knows what to search for and we can already have an "increased difficulty" version of a puzzle or an area without having to teach the mechanic exactly. Expect to see a few tweaks to puzzles or some key card locations and some new hazards like purple goo taking over familiar areas, requiring new ways to think! :) [img]{STEAM_CLAN_IMAGE}/32209318/e96de3476e35df70b5681cddfcf19dc36cb15d22.png[/img] [img]{STEAM_CLAN_IMAGE}/32209318/45475617cc6b3107a48ba14b66e44acf77a532e1.png[/img] [i]Hmmm… someone has been moving generators again… Wait! what is this purple goo!?[/i] [b]MIRROR FLIP MAPS (the slow way)[/b] All of the maps have been mirror flipped! Now you'd think the process is just "translate X for map" and you'd be right, but I didn't want to just have everything 100% mirrored, I wanted the signs, text, etc.. to read properly as if the maps were always like this. This poses a few annoyances as build engine is rather primitive with walls/sprites store a simple "Flip X, Flip Y, Flip both" flag. Here are a few examples of manual fixes from the editor side: [img]{STEAM_CLAN_IMAGE}/32209318/cfa3f0f310192d248bf60c2715458025ad318aab.png[/img] [img]{STEAM_CLAN_IMAGE}/32209318/3941ef35be3ddddbfdf81f0c4bbf041c2a4925fe.png[/img] [img]{STEAM_CLAN_IMAGE}/32209318/c5363a924ff3beb9705d11e0a82322bf6b904aa8.png[/img] A lot of the text actually consists of separate letter by letter sprites that are now all in wrong order. The solution was to code a custom script where I can pick a group of sprites and "de-flip" these with some rotate functions and math. After this you'd have to re-align sprite group that could get stuck inside walls due to Z fighting hacks or rounding errors. Surprisingly, Build has no way of selecting multiple sprites in 3D so I ended up adding that as well. [table noborder=1] [tr] [th][img]{STEAM_CLAN_IMAGE}/32209318/e447f528d8cc5b11914a9efd4d9dbfc811ce0eb3.png[/img] [/th] [th] [img]{STEAM_CLAN_IMAGE}/32209318/795d9e5efd547e19edf99f8819df0778f373fb6b.png[/img] [/th] [/tr] [tr] [td] [img]{STEAM_CLAN_IMAGE}/32209318/e083f791b3c8a0be2fb94cb22e94f8c45487990a.png[/img] [/td] [td] [img]{STEAM_CLAN_IMAGE}/32209318/795d9e5efd547e19edf99f8819df0778f373fb6b.png[/img] [/td] [/tr] [/table] [i]A de-flip script is applied against the selection which rotates it against an axis and flips the sprite’s cstat bit that controls if the texture is mirrored or not. However in many cases sprites are not 100% flat against the wall, any sprites sticking out will now end up inside so it needs careful repositioning to restore it…[/i] Floor and ceiling texture alignment can either be world or sector relative. This means that when you move/rotate stuff around, the origin of texture panning will be bound to one edge (wall) of a sector. If sector aligned, it will always be parallel to the "first wall" of a sector. This is where things get a bit more complicated... Walls in Build are actually points in the 2D map and don't contain the expected x1,y1 - x2,y2 references, instead a wall is considered a single point in 2D space and it stores the next point's ID based on clockwise direction of the sector's shape. Flipping the sectors will generally work but as the alignment has to be redone internally to be clockwise again (Reverse order), it might result in misalignments that need manual fixing and can't be automated or detected. These were fixed manually. Huge thanks to our testers for helping catch so many more of these! [table noborder=1] [tr] [th] [img]{STEAM_CLAN_IMAGE}/32209318/8f8576f70e2fba88c7a22647a36d9e04c71bb566.png[/img] [/th] [th] [img]{STEAM_CLAN_IMAGE}/32209318/b11c6ac1a66e421248d730a1f7ec062f31dd869d.png[/img] [/th] [/tr] [/table] [img]{STEAM_CLAN_IMAGE}/32209318/af4ca6d70deba66b11844ab164278326bfd90ba5.png[/img] [center][i]A Few of the many examples where manual fixing is required[/i][/center] However toilets were done fully in code, with hardcoded alignments for any necessary texture swaps. Solution? Create more editor code and fix every single toilet in the game manually one by one by flipping the first wall to be one wall towards the other side... I had a day where I was literally inspecting all the toilets in the game. [table noborder=1] [tr] [th] [img]{STEAM_CLAN_IMAGE}/32209318/cf7b85e76698b869bec837ba8085bd5a18839d1d.png[/img] [/th] [th] [img]{STEAM_CLAN_IMAGE}/32209318/289a6d2e11fc8c289cf7f5376dda47d16cd79d77.png[/img] [/th] [/tr] [/table] [i]Flipping the wall order changes the alignment of the floor texture. Fixed on the right one.[/i] COLLECTIBLES Something scrapped from the original game was a concept where you'd find bombs around the world that you'd defuse and gain a reward for. This was rather quickly scrapped but we always kind of liked the idea of having other "hidden in plain sight" stuff to find besides secrets. Perhaps inspired by MGS2 Fatman defusal stuff and a bit of NOLF, you can now find collectible bomb pickups scattered around the world in challenging places, ticking away, waiting to be defused. On 1.0 you had limited use for jump boots but expect to require them for some of the new stuff! Areas which were previously unreachable might now have stuff to look out for, and you'll get to trade some for powerups/items between zones. SPICE THINGS UP WITH AFTERSHOCK And finally we have the whole library of new enemies, powerups, items and weapons from Aftershock. You will have access to a ton of stuff from the get go but also expect a pushback from the enemies! Action will be much more hectic due to the new tools we have at our disposal. I won’t be spoiling the whole roster here but we do have a bunch more variety, including a rather ridiculous powerup. [img]{STEAM_CLAN_IMAGE}/32209318/506faeea7cf02d0db8beae8c7d13d990395e9766.png[/img] While a lot of this could be done with run-time scripts, we wanted to make the experience feel more like a real game mode and also doing something cool for the fans to play around with. It was an opportunity to make a few of the fanmade “unreachable area” rumors a reality ;) Expect to see maps include a few of the new effects we’ve developed for aftershock. I hope you got some idea on how arrange mode is shaping up and next time I’ll be shedding some light on how the zone3 boss ship was done. If you haven’t bought Ion Fury yet then consider grabbing it from [url=https://store.steampowered.com/app/562860/Ion_Fury/]Steam[/url] and stay tuned for more Aftershock information! Max ‘oasiz’ Ylitalo