Category Archives: Xenos

Exciting times

When I posted Xenos demo two weeks ago, I was hoping that people would play it and maybe become interested in my game. It did work: the site was visited by more than a thousand people, and many of them played the demo (and some gave valuable feedback).

But, in addition to these people, Xenos also attracted some unexpected attention from game developers – unexpected, but most surely welcome. I’ve originally started development all by myself, and thought it would stay that way. I’m glad to say that I was very wrong. At first, my friend and fellow developer from Mail.Ru Games – Timofej Nikitchenko – joined me as a partner at Chaos Cult Games. Then, some people who saw the game on tigsource.com forums offered to help out with art for Xenos. And Timofej, who has lots of contacts in russian game development (he’s a pretty outgoing guy, as opposed to me) brought in basically a whole art team, willing to make art for us.

Between these two categories, we now have more artists that I know what to do with – probably more than 10 people, although some of them would probably drop out later. This means that this whole operation just became way more serious. More people, more resources, more possibilities and less tight budget – all of this has to be put to good use now.

What does it mean for Xenos? As a first thing, the pseudo-voxel art style is gone. I’ve originally devised it as a way to make as many assets as possible myself; now it’s not a problem and we can do better. The whole concept of grid-based world – made up of all those small squares – is gone too, as it’s too restricting artistically. The world would still be a grid under the hood, but made of bigger, much more varied pieces, with unrestricted object placement.

These changes mean that around two or three months of my previous work would go down the drain: all art assets, all map generation code, pathfinding, storage, physics etc. This sort of thing happens in game development, and I’m not at all sad to see it gone: I know I can do better now. Right now, I’m busy working on the new tile-less world prototype; and our concept artists are creating sketches to finalize new Xenos art style.

While I can’t show any pretty pictures this time, soon, I hope, we’ll have loads of them. Stay tuned for the new, much better Xenos!

Going through feedback

Yesterday the demo version went public on this site. I’ve shown it to everyone who would play and gathered quite a bit of feedback. I want to thank everyone who told me their thoughts on the game, no matter how small or trivial.

Today, I’m compiling everything I heard into a big list, so I can decide what is important and what isn’t. Here’s what people wanted from Xenos:

Important things

That is, things that many(more than one) players noticed/complained about.

  1. Objects such as cabinets can be accessed from behind walls. This is a bug that nearly everyone mentioned. I knew about it beforehand, but it seemed kinda minor. That just shows how skewed a developer’s perspective might be.
    bug_open_through_wall

    Opening a bookcase though the wall.

  2. You can’t kill aliens. That’s not a bug, but it’s the most commonly requested feature by far. A lot of people would equip a crowbar, or a sledgehammer, and try to pound aliens with it, only to discover that it does not work. Originally, I wanted the aliens to be invincible, because, well, aliens! But it seems confusing, so I’m adding attack options in the next update. Killing/disabling an alien bot wouldn’t be easy, though!
  3. Equipping items is confusing and counter-intuitive. In Xenos, you can equip any item in your “hand” slot, which is kinda realistic, but does not match expectations set by other games. Most people wanted to put clothes into some “body” slot that does not even exist. Also, the mechanic where you have to take an item in hand and then click on stuff was missed by most people. I certainly need to rethink my approach to using items and objects; I’m just not sure how to make both usable and intuitive. Back to the drawing board on this one…
  4. The “loot” interface is unwieldy, especially having to close it with mouse click. A lot of people suggested that it should close automatically when player moves, so I’m going to experiment with it.
  5. The status effects and especially the health/damage systems is confusing. I don’t think I can make it absolutely clear without “dumbing down” (It’s a pretty complex system right now, expect a full-blown post dedicated to explaining it.) However, I clearly need to make it clearer. I think I would add a “character screen”, similar to inventory, that would show an expanded view of all your status effects and counters, with explaining tooltips. I would also add some sort of full-screen effect when you’re hurt, wounded etc., to make it more obvious that your avatar is having problems.
  6. The whole situation is confusing; a few people just couldn’t understand what’s going on and what they’re supposed to do. This is important, but sort of inevitable with an early preview – I had to put player basically in the middle of a war zone, because the game does not have anything else at the moment. I hope Xenos would become less confusing with new versions, when I add friendly NPCs etc.

Less important things

That is, things that only one or couple players mentioned, but that still seem relevant.

  1. The game needs a map. I planned to add it right from the start, but this was a low-priority feature that I postponed indefinitely… now that someone asked for it, the priority increased (though it’s still in the “less important things”) I guess map would become more important when the game world would be larger – and I’d have to make it larger for the next version.
  2. The game needs more sound. Or, actually, it needs any sound: right now Xenos is silent. This is another planned but postponed feature, that I really should prioritize more.
  3. bug_light_through_wall

    Torchlight does not respect obstacles

    The torchlight works through walls and obstacles. This is quite unrealistic, and apparently bugs some people. Unfortunately, making a correct light with shadows is quite a task: my hippie freeloader edition of Unity3D does not support shadows at all, and coding them by hand would require a lot of effort. Still, I might bite the bullet and do it sometime.

  4. Aliens are not scary and seem chaotic. There are too many of them, and they don’t try to kill the player. Actually, that’s working “as designed”, because I never intended alien bots to be scary – they are doing their own incomprehensible alien things, and don’t attack the player because they actually don’t care. Having said that,   probably need to make bots seem more purposeful, and add some sort of “scary” alien that would actively harm the player. Just to make things more interesting and varied.
  5. Some people really miss crafting. Right now, most items are useless, and none can be used to create something new. I should add at least some crafting functionality, although the bulk of it would probably have to wait for some future version.
  6. Interface needs hotkeys. “I” for inventory, “Esc” to close open windows. This is pretty basic functionality, I’m surprised that only one person complained… and somewhat ashamed that I missed it myself.
  7. Buildings like stores etc need sign-boards, to make them stand out more. This should be easy to add…
  8. Town generally needs more stuff on the streets, to make  it less boring. This is something I’ve been working on, but more stuff can certainly be added. However, as I plan to add new locations to the game in next version, I think fleshing out town location would remain pretty low-priority for now.

Least important things

That is, things that some people mentioned, but that I won’t do for some reason.

  1. One person suggested making terrain 3-dimensional (i.e. adding varying height.) While this certainly would add more depth (literally!) to the game, and make it more visually interesting, changing terrain to 3D would require changing lots of code. Too much to be feasible at this stage, actually, so Xenos would stay perfectly flat.
  2. Someone also suggested adding “civilian” NPCs to the town map, that try to run from invaders. That’s a nice idea, but I won’t be implementing it. Mainly because in next version, I plan for the game to start outside of town, and by the time the player gets there, everyone would be either dead or gone. So, I don’t want to spend time on a feature that won’t actually be visible.

Whew, that was a lot of feedback! I’ll go and fix all those things listed above now. Meanwhile, I’m open for even MORE feedback – so play the game, and show it to your friends if you like what you see.

Playable demo!

Finally, you can try playing Xenos! The alpha demo is available here right on this site. It is playable in browser, provided you have Unity Web Player installed (or if you don’t, it can be installed with one click on a Windows machine or Mac).

This version is far from final. Lots of stuff is not done yet; in addition to that, making a browser-friendly demo required some compromises. The game world in demo is only 256×256 tiles, so as to fit it in memory all at once. It’s not much of a problem currently, since everything interesting fits in this space.

There’s not much gameplay yet: you can explore the town overrun by aliens and try to not get killed in the process. The “goal” of the game is to find and drive the car. It’s harder than it looks, ’cause the car tank is empty, and you’d have to search for fuel (hint: there’s a gas station there.) Most of the stuff that can be found in town is useless for now, and you can’t do anything to aliens: only run away.

For me, at least, even this version seems kinda fun. What do you think?

Technically, prototypes

While I’m busily adding more and more stuff to Xenos, let’s talk how this stuff is actually organized. I think it may be interesting.

The game world in Xenos is made of tiles – that much is evident just by looking at it. And each tile can have one (and only one) object inside: stuff like trees, furniture, alien artefacts etc. Some objects, like beds, take up more than one tile. There are also walls that are placed between tiles (technically, each tile has a “top” and “left” wall). Walls and objects are static: they never move, but they can be destroyed or placed anew. Objects that can move are called dynamics: currently, that would be the car and poison gas cloud. Finally, there are NPCs and the player: they can move, but they’re not dynamics (Why? I don’t know, it just happened somehow. I probably should change that in the future.)

There are also some things that don’t exist directly in the game world, but are important nonetheless: most notably, items in inventory.

To add a new thing to the game, it has to be described somehow. In Xenos, things’ descriptions are called prototypes. Technically, a prototype is a piece of XML that specifies everything the game needs: what model the object has, how high the wall is, what the item is named, etc. Here’s how a very simple prototype looks:

   <PrototypeBase xsi:type="FloorPrototype">
     <Name>grass/1</Name>
     <Id>1</Id>
     <TagsArray />
     <AtlasIndex>1</AtlasIndex>
   </PrototypeBase>
protos_editor

The editor I made to work with prototypes.

For more complex objects, though, a simple list of data is not enough: I have to define behaviors somehow. Most, probably all, objects and items in Xenos are going to be interactive, probably in more ways than one. Consider a simple cabinet: it can be opened and items stored inside, it can be chopped up using an axe, maybe it can be disassembled into boards for building, or moved to block passage… that’s a lot of behaviors!

To handle this, I use something called a component system. Every prototype has a list of components, where a component is itself a little piece of data with a corresponding piece of code. When prototypes are loaded in game, every component data is coupled with code (technical term: it becomes an instance of corresponding class). Components have several nice features:

  1. Components contain their own data. If some objects are destructible and have a hitpoint value, but others don’t, I can store this value in a component and only add this component to relevant objects.

  2. Components are reusable. If a cabinet and a chest can both store items, I can only write one “container” component and use it with both.

  3. Components can be mixed and matched independently. A knife and an axe are both melee weapons, so I add a “melee weapon” component to both. If I want the axe to also have an ability to chop trees, I need only add another component: the weapon code is not affected at all.

  4. Components can be queried. For example, when an item is selected, I can select from the list of this item’s components those that define a “use item” behavior (technical term: they implement the “UsableItem” interface.)

This approach: a list of prototypes, each with a list of components, all stored in XML – makes Xenos pretty modding-friendly. Properties can be easily changed, behaviours added or removed, etc. Unfortunately, adding or changing assets – that is, models, icons etc – is not that easy. It’s actually next to impossibly due to how Unity3D insists on using its own compressed format for everything. I might be able to solve this problem at least partially, but for now it’s pretty low priority.

And to counterbalance all the technicalities above, here are some (relatively) pretty pictures. In the last couple of days I’ve been adding various hazardous alien artefacts…

hazards_arcs

These are alien arc machines. The ones on top produce a rotating ray, and the ones on bottom have a static lightning between two machines. Needless to say, touching the lightnings hurts.

hazards_fire_and_gasThe green clouds are poison gas generated by those strange green contraptions on the ground. And orange clouds are jets of fire (yeah, they don’t look the part. I’m not that good with particle effects either) that spring up in random tiles. There are also a couple of alien robots here.

 

Content, content, content

I’ve been preparing for the release of public playable demo of Xenos. There’s still a lot stuff to do before I consider it ready: I guesstimated it last week and came with 4-5 weeks in total. A lot of this time is going to be spent on adding content to the game – I mean, as opposed to writing code, adding new features etc.

Even a relatively small game location requires many objects – static models, effects, items etc. I’m working now with a town sized at 256×256 tiles (that’s the size of a “block” of map that is stored in a single file on disk). It has around 20 different buildings that use some 20 kinds of wall objects and 50 kinds of tile objects – things like furniture, stuff lying around etc. And I think it needs even more, perhaps twice that number. It turns out, a town has tons of different stuff – who would’ve thought, right?

As I’m spending most of my time making models and putting them on the map (the town map is not procedurally generated – I want to have an example made by hand before I tackle generation), today’s post is gonna be mostly pictures.
content_houses

Here we have some residential houses. This (and most of the following) picture is shot in editor mode, which allows me to put camera higher than in-game, to fit more on a single picture.
content_cafeHere’s a little cafe. Currently it mostly reuses the same models as residential houses: it’s just a really big kitchen and many tables. And chairs.

content_store A general store with a parking lot. With a small house in background.

content_warehouse

A warehouse with crates. No game can be considered complete if it doesn’t feature crates (although, these are just cardboard boxes actually. I guess they’ll have to do..)

content_workshopSome sort of workshop. I think workshops and generally industrial  buildings are in the most dire need of more models. I had to resort to sprinkling “generic rubble” around here.

content_gas

A gas station. Looks sorta empty, but it would be of huge importance when I add refuelling mechanic to the game.

content_invThis picture shows a different kind of content: items. To make a more-or-less believable abandoned town, I have to put lots of items in the houses. Since Xenos is set immediately, or maybe soon after, the apocalypse, I can’t just explain empty containers with “everything has been looted”, like zombie games do: there are no looters yet – in fact, you play one of the first. I made dozens of items, event though lots of them still use the generic “gray box” icon, and don’t do anything useful in-game. Some don’t even have any descriptions: try writing interesting 5-15 word descriptions for 20 items in a row and you’d understand why.

I think town content is mostly ready for the demo; but I need at least some alien objects to add: their metal robotic structures, traps, and maybe a couple of alien “species”.

Also, if you can think of any useful object or item to add, don’t hesitate to suggest it in comments. I don’t promise I’d add it immediately, but it would probably find its way into the game sooner or later.