Welcome back everyone!
With the next alpha build still a good 10-or-so days away, we thought it would be nice to post an update about some of the changes and new features coming up.
Amor’s Den is by far the most popular floor in the Tower, frequented by commoners and elite alike. It’s a den of vice, corruption, and shady business deals.
And if there’s one thing I always loved in games such as the original Syndicate, it was the crowds of citizens populating each level, which really added a sense of being in a sprawling metropolis.
That’s why we couldn’t have a hub level without crowds ^_^
Of course these are placeholders, which will be replaced by NPCs generated from the various body parts available.
The crowd is actually generated on the fly, so we can make the level look packed with citizens, while they are in fact spawning in and out of existence as you move around the map ;)
Another big decision was whether to “take away” weapons on this floor, or let the players deal with the potential consequences of their actions.
As you might have guessed by now, I’m a huge fan of games which give you a lot of freedom, so in my mind it was never really a question, and luckily Thomas didn’t seem to be against it ^_^’
However this also meant making the crowd react to players firing their weapons:
Helpless citizens running away and cowering in fear is hardly a deterrent to harass them, so in addition to making crowds disperse, guards were introduced in an attempt to “curb crime” ;)
Guards are deployed strategically throughout the floor. While they have been instructed to close an eye on any criminal activity going on in the Den, they also have clear orders to resolve any physical altercation by any means necessary.
And let me tell you, they don’t f**k around …
If you manage to evade guards for long enough, they will give up on you and return to their stations.
So while it won’t be impossible to kill NPCs in the Den (some areas are less guarded than others, and some side-quests might involve assassinations…), you better plan for a good exit strategy ;)
No hub level would be complete without NPCs, and Amor’s Den is no exception. Please keep in mind however this is *not* an RPG, so while you can expect a dozen or so NPCs to give you optional side-quests and background information about the world of Tower 57, plus the mandatory shopkeepers, it will be no Skyrim or Fallout 2 in terms of complexity or content ^_^’
Having said that, the dialogue system does support some pretty nifty options (this might be of interest to future modders), such as:
- character specific dialogue : you can specify character-specific lines of dialogue within the same “conversation”, so NPCs will say different things depending on which character you are playing with
- actions : dialogue “entries” can trigger actions such as “giving you an item” (can be a purchase from a shopkeeper, a quest reward, etc.), “taking an item from you” (or in other words, the ability to give items to NPCs, for example to complete a quest, or unlock other dialogue options), “starting and ending quests”, triggering things like doors, traps, etc.
- conditions : you can make dialogue “entries” only available under specific conditions, for example playing as a specific character, being in possession of a specific item, or having completed a specific quest.
Conversation trees are built directly in the editor, so modders won’t have to fiddle with text files or anything of the sort (don’t get too hung up on the UI, it will all get polished before releasing the tools).
For the art side, I'm passing the mic to Thomas ^_^'
The main Goal of February was actually Amor's Den. But because the real-time playtest button broke and I had to wait for it I spend early february with enhancing the Lower Floors and Biolab tilesets, which both aren't finished, but a lot more developed. Now they work much better with our mapping editor, which will save us in the long run time with mapping.
Around February 12th I started on Amor's Den. I knew from the KS scenery that this is the area which takes graphically the most work to get done. Not only because of the huge set-pieces, but also because of all the tiny details, the traffic and much more. It surely will take a lot more time to get it to a really polished state, but I got some big set-pieces covered, made the basic collisions working and added quite some details to the map.
Enjoy some process gifs:
A short note about them: I found out that Sunday isn't particularly the best time to host them and a lot of my friends recommended me to move to Twitch. I didn't have any time to look into it so far, but I will make an announcement on my deviant-art page, if I set up a Twitch stream.
And finally a more technical note to conclude this update (feel free to skip it if don’t fancy this sort of stuff).
As some of you may already know, textures / sprites are typically packed into bigger textures called “sheets” or “atlases” for performance reasons (won’t bore you with too much details here, unless somebody is interested).
This is usually done at build-time, i.e. when the executable is being put together, using tools called “texture packers”: you feed these tools a lot of small images, and they spit out one big image containing all the smaller images neatly arranged (as well as some meta-data so you can locate them in the big sheet when you need to use them).
While this is all nice and dandy, it doesn’t entirely solve our issue: some of these sheets, for example the one containing the player’s sprites, need to be re-used over and over throughout levels.
This leaves two options:
- create one huge sheet for each level, containing the “generic re-usable” sprites as well as the level-specific sprites
- at run-time, grab the “generic re-usable” sprites and the level-specific sprites, and generate the huge sheet
As you can imagine, the first option is hell : creating and maintaining these huge sheets is a big time sink, and leaves a lot of room for error (for example if you change a generic sprite, you have to go and make sure it is updated in every single sheet! consider that we have well over 1000 unique sprites / entities, never mind animation frames etc., and you start getting an idea of how much work this represents!).
So I obviously went with option number 2, and the result is mega-atlases :)
These mega-atlases are generated dynamically at run-time (so when you play the game) and ensure that each level basically only requires 1 texture to render, which for performance is absolutely great!
Here’s what the atlas looks like in the first sewer level, and the (current, so mostly empty!) atlas for the upcoming Amor’s Den level: if you look closely, you can spot common elements in both :)
And that’s it for this update!
Marco, Thomas, & Raf