Many of the development posts about Strangeland have focused on the personal experiences and values that shaped the game. In todays post, I want to talk about a more practical side of game development: how I was able to make the 25-year-old Adventure Game Studio (AGS) engine bring Victors art and audio and Marks design and writing to life. Some of what Im going to discuss are features that players of Strangeland will see, hear, and notice. But much of the work was subtle or even invisible because one of the most important things is for the software to get out of the way while the player is experiencing the game. Im as proud of these accomplishments as I am of everything else that went into the game, and for those who are interested in the technical aspects of making games, I hope this will provide some inspiration and insight.
Audio Engine
Many players have said very kind things about the amazing soundscape that Vic and our voice actors created. But this was only possible by completely overhauling AGSs default audio engine. As anyone who has bought the soundtrack or listened carefully has noticed, Strangeland has a huge number of relatively short musical tracks. The music changes from exploration to dialogue, and even sometimes within dialogue. Because of frequently changing musical tracks, we needed crossfading to avoid unpleasant cuts from one track to the next. But AGS did not support custom crossfading; instead, you would have to use one of AGSs limited sound channels. The problem is, Strangeland uses a very large number of sound layers to achieve its rich soundscape: music, ambient sound effects, active sound effects, dialogue, etc. can all be playing at the same time. When I dedicated a channel to crossfading, the result was that some other audio (perhaps a sound effect, perhaps a voice over line) could get cut off. It was impossible to predict when this would happen. The easy solution would be to cheapen the soundscape. But with a project so personally important to Victor and Mark and myself, cheap fixes were not fixes at all. So I took the hard solution: finding and integrating a cross-platform audio engine. I settled on SDL Mixer and after about a week of work, I managed to get it working in AGS. Around the same time, I was playing the game Celeste, and I was very impressed by its use of a low-pass filter. It struck me that we could use that to good effect in Strangeland, particularly in combination with a blur visual effect when the inventory is open. It actually took me about a month to get the filter working right. Its a small thing that players may not notice. The point is not for them to notice it, but to feel it, and I think it adds to the feeling of immersion and even dream-like quality of Strangeland. To my knowledge, its the first use of a low-pass filter in any AGS game. You can hear for yourself here: [previewyoutube=mOi4UlOH2GI;full][/previewyoutube]
Savegame System
By default, AGS saves games by dumping all of the system memory associated with the game into a file, and restores games by moving that data back into memory. In a way, this is a very reliable system because it makes sure that nothing gets lost in saving and restoring. But it has serious flaws. The worst flaw, in my opinion, is that if you update the game in a way that changes how it handles memory, old saved games will break. As a result, most AGS games on Steam are only rarely updated, and the updates tend to be fairly minor (to avoid breaking saved games). We did a few small patches and two large updates to Primordia, and when we did the large updates, many players were frustrated because even though the game was now much better, they had to start from scratch. I spent a lot of time making custom saves for these players so they could resume where they left off. But this leads to the second problem: AGS games actually use a lot of system memory. Even if they look like adventure games from the 1991, they use RAM much more liberally. Saved games for Primordia, Unavowed, or Technobabylon can be as large as 20 megabytes. This makes them a pain to send or backup. During development, that means its a hassle for testers to send me saved games when they encounter a bug. That isnt the only problem with large save files, though. When saves get that large, even on a fast hard-drive there is generally a small FPS drop when you save. Because we wanted an autosave for Strangeland, that meant that every time you entered a room, the fading effect and audio would skip slightly. My dear neurotic friend Mark sent me roughly 1,000 emails complaining about this. And the problem got even worse for Strangeland. As you know, Vic does many very large, even full-screen animations. Loading these into memory is not instantaneous, which means that if we load the animation in real-time, there can be a very slight FPS drop there, too. Naturally, Mark complained about this as well. I solved the problem by precaching the animations when the game loads, where the player will not notice a short hang. But now, Strangelands memory usage increased even more -- which meant that the save files were even larger, which meant that the FPS drop on autosave was even worse. Cant you just make a custom save game system? Mark asked. The answer is of course yes, but at what effort? But, as stated, for Strangeland, I felt I could not spare any effort. So, now we have an elaborate savegame system. To begin with, each save file is only 30 kb, even though they store over 5000 variables that include character attributes (position, animation frame, etc.), inventory items, progress variables, UIs, dialogue options, what sound effects are playing, etc. This was a size reduction of approximately 99.5% because what is not saved is things like the graphic or audio data that the game has in system memory. That means saving and loading is instantaneous, and the autosave FPS drop was cured. On top of that, the game auto-numbers your saves, creates small screenshots to use in the savegame UI, and generally manages the save files in a more organized way than AGS normally would.
But setting aside these aspects of the player experience, the other critical difference is that the saved games dont break when we upgrade Strangeland. In the first month of release, weve patched the game ten times, and its essentially invisible to players. Small bugs dont have to accumulate for months for one grand saved-game-breaking update. We can squash them immediately. And we can do that even though six of the patches weve pushed wouldve broken saves without this custom engine. Developing, and above all QA-testing, the savegame system took a long time because you have to be very careful to make sure you have saved everything necessary; its not like the default system that does it automatically. And probably no one who plays Strangeland thinks, Wow, what a savegame system! The files are so small! A savegame system should be something the player doesnt think about at all -- and thanks to a lot of hard work, thats the way it is for Strangeland.
Reflections
What if mirrors were a major theme of the game? my idealistic friend Mark thinks. Mirrors within mirrors! Shattered mirrors! Funhouse mirrors! Mirrors that reflect only a partial image and not the real thing! A reflecting pool in a hall of mirrors! Mark sometimes claims that he once was a programmer, but his notions suggest otherwise. And, of course, Victors love of the game Weird Dreams meant that it was inevitable we would have a hall of mirrors in this carnival. Sometimes, the nightmare in the carnival is the nightmare of working with Mark and Vic. Mirror effects should not be possible in AGS. AGS doesnt support even basic affine transformations, only scaling effects. Even basic rotation requires custom parts to work.
Since Vic draws nothing straight, the mirrors were never going to be a matter of simply flipping a sprite. Instead, everything required simultaneous skewing, rotating, and scaling (as well as flipping). A subtle blur effect to mask the imperfections. Different mirrors at different angles required different formulas. All of this has to be done in real-time, and it has to be done efficiently enough to prevent a catastrophic framerate drop. Okay, but what if there were, like, tear-drops falling from the roof, making the reflecting pool ripple...? Yes, my friends Vic and Mark, I will give you even that. No effort spared. Because AGS cannot push this into the GPU, all of these effects are coded through a software renderer. But, thankfully, they all work.
Text Gradient
Primordia used solid-color, blocky text that evoked the feel of an old-fashioned computer terminal. But the dreamlike environment of Strangeland required a different look, I believed. And from playing Kathy Rain and Whispers of a Machine, I knew just the thing: a color gradient within the text. I believe that those games use a plugin that enables bitmap fonts, but for Strangeland we took a different approach. The games entire projection of text and messages is printed upon a 640x360 graphic image. (In some engines, this step might be easy, but not in AGS; it required custom speech text functions and data pooling.) The gradient is applied by starting from the bottom at color X and then, every Y pixels, it moves towards black by Z. Z is defined by the total individual height of each sentence projected into the screen. Color X is user-defined and Y is also user-defined, arbitrarily selected, so these effects can be adjusted by the player in the options menu. After setting up the basic function, I spent a lot of time ensuring that readability was not impaired. The end result distinguishes us from the appearance of a lot of AGS games, while also reinforcing the unique feel of Strangelands setting.
Outlines
AGS has no built-in function for outlining a sprite or interface element, so whenever you see an outlining effect in an AGS game, its been done manually -- mostly by having two versions of the sprite (one with an outline, one without). (There was, in 2003, an outline plugin for AGS, but it worked only on inventory items.)
Strangeland uses outlining so extensively, that approach was not a viable option. So, instead, I set up a system for real-time, dynamic outlining. We use it for the mouse cursor (such as when it is over a hotspot), for items in the inventory, and for UIs. These visuals cues make the interface clearer to players, but they also add a dynamism to elements that would otherwise seem static.
Visual Effects
The most obvious of these are the effects that occur when the Dark Thing screeches or attacks. I wanted it to feel as if reality was fracturing or even collapsing during these sequences. For the screeches, I created an effect that looks almost as if the room and its inhabitants are disintegrating. For the attacks, darkness encroaches from the edges of the screen as the Strangers world collapses inward. Mark disliked the effect initially, but me and Vic thought eye candy like that was too good not to include! Another effect we use in several places is a wave effect -- this allowed us to animate the Womans beautiful golden hair, to create a visual distortion to convey the Seastars psychic attack and to give the portals their supernatural appearance. In several places, I used effects inspired by the SNES Mode 7. This includes the rotating cloudscape near the end, the endless well through which the Stranger falls in Deadland, and the energy that flows in and out of the final portal. Finally, there were many single-use effects, such as force fields, energy beams, electrified gates, etc. While Vics art is the heart of the games visuals, these effects brought motion and energy to scenes that initially seemed too static. Together the art and the effects helped bring Vics nightmarish vision to life.
Rain
The last coding trick I will mention is the rain system used near the end of the game. Many famous AGS games feature plenty of rain, but Ive always felt that the rain seemed stuck in front of the scene, rather than being integrated into it. For Strangeland, we wanted the rain to help immerse the player in the strange physical environment of the game. To do that, I created multiple layers of rain, along with puddles, drops, and other effects. You can learn more about it in this video: [previewyoutube=1LoFhgFJvBQ;full][/previewyoutube]
Conclusion
Ive now coded some or all of several commercial games in AGS, and I was glad to put everything I learned to work on Strangeland. These features were an important part of creating the total Strangeland experience, sometimes in a flashy way, and sometimes in an invisible way. In the end, Im very proud of what we achieved. Working with AGS, and the AGS community, has always been a pleasure!
Strangeland
Wormwood Studios
Wadjet Eye Games
2021-05-25
Singleplayer
Game News Posts 47
🎹🖱️Keyboard + Mouse
Very Positive
(719 reviews)
http://www.wadjeteyegames.com/games/strangeland/
https://store.steampowered.com/app/1369520 
Strangeland Linux Depot [4.1 G]Strangeland Steamdeck Depot [4.15 G]Inscryption (Linux) [4.12 G]
You awake in a nightmarish carnival and watch a golden-haired woman hurl herself down a bottomless well for your sake. You seek clues and help from jeering ravens, an eyeless scribe, a living furnace, a mismade mermaid, and many more who dwell within the park. All the while, a shadow shrieks from atop a towering roller-coaster, and you know that until you destroy this Dark Thing, the woman will keep jumping, falling, and dying, over and over again....
Strangeland is a classic point-and-click adventure that integrates a compelling narrative with engaging puzzles. For almost a decade, we've been working on a worthy successor to the fan-acclaimed Primordia, and we are proud, at long last, to share our second game.
Strangeland is a place like no other. Even in the real world, carnivals occupy a twilight territory between the fantastic and the mundane, the alien and the familiar. In their funhouse mirrors, their freaks, and their frauds, we see hideous and haunting reflections of ourselves, and we witness the wonder and horror of humanity in just a few frayed tents, peeling circus wagons, dingy booths, and run-down rides. Strangeland, of course, is most definitely not the real world. Indeed, unraveling the connections between this nightmare and the real world is the game's central mystery, and finding a way out is its central challenge.
As you explore Strangeland, you will need to gather otherworldly tools and win strange allies to overcome a daunting array of obstacles. Forge a blade from iron stolen from the jaws of a ravenous hound and hone it with wrath and grief; charm the eye out of a ten-legged teratoma; and ride a giant cicada to the edge of oblivion.... Amidst such madness, death itself has no grip on you, and you will wield that slippery immortality to gain an edge over your foes.
Navigating this domain of monsters and metaphors will require understanding its denizens and its enigmas. Unlike many adventure games that offer a linear experience and single-solution puzzles, Strangeland lets you pick your own way, your own approach, and your own meaning—one player might win a carnival game with sharpshooting, another by electrical engineering; one player might unravel a strange prophet's wordplay while another gathers visual clues scattered throughout the environment. Ultimately, Strangeland's story will be your story. You are not the audience; you are the player.
- Approximately five hours of gameplay, replayable thanks to different choices, different puzzle solutions, and different endings
- Breathtaking pixel art in twice Primordia's resolution (640x360—party like it's 1999!)
- Dozens of rooms to explore, with variant versions as the carnival grows ever more twisted
- An eccentric cast, including a sideshow freak, a telepathic starfish, an animatronic fortune-teller, and a trio of masqueraders
- Full, professional voice over and hours of original music
- A rich, thematic story about identity, loss, self-doubt, and redemption
- Integrated, in-character hint system (optional, of course)
- Hours of developer commentary and an "annotation mode" (providing on-screen explanations for the references woven throughout the game)
At Wormwood Studios, we make games out of love—love for the games we've spent our lifetimes playing, love for the games we ourselves create, and love for the players who have made all of those games possible. We know that players invest not just their money and time in the games they play, but also their hope and enthusiasm. And we want to make sure that players receive a rich return on that investment by creating games that provide not only a fun, challenging diversion for a few hours, but also lasting memories to keep for years.
We think the best way to achieve that with Strangeland is to adhere to the genius of the adventure genre: the marriage of challenging puzzles and thrilling exploration, on the one hand, with an engaging narrative, on the other. At the same time, we've tried to remove the punitive aspects of adventure games (deaths, dead ends, illogical puzzles, pixel hunting, backtracking, etc.). Within this framework, we add uncanny visuals, memorable characters, and thought-provoking themes. The result for Primordia was a game that has received thousands of positive player reviews, and we have refined our approach further with Strangeland. We hope it will not disappoint the players who have given us such great support and encouragement over the years! And we hope that it will find a place in the hearts of new players as well.
- OS: Ubuntu. Debian
- Processor: 2.7 GHz Dual Core (and above. can run on single core)Memory: 2 GB RAM
- Memory: 2 GB RAM
- Graphics: OpenGL. DirectX 5
- Storage: 2 GB available space
[ 5946 ]
[ 4248 ]