Church Interiors, Heresies, and GONGS

This week I’ve been finishing off the first set of interiors for the game – religious buildings. I selected these first because I know they’d be quite complex, and I figured this would be a good way to get down a lot of the appropriate infrastructures for interiors and generating/saving/storing/loading them, and then be able to apply those to other simpler buildings rather than simultaneously creating the data structures and the buildings as I went along. Here’s a nice shot of a religious building with the ground floor – the purple symbol is the altar, the blue symbol is a reliquary! – and the second floor, which has some private quarters for the priest (behind the locked door in the middle) and also a staircase leading upwards behind another locked door (on the bottom-left), which leads to who knows where?

Religfloors

Religious buildings have become highly complex and varied in a huge number of ways, but one of these ways which I’ve focused on this week has been in terms of statues within the religious buildings. Originally statues were going to be a binary either/or – either religious buildings had statues of appropriate important figures/deities, or they didn’t. However, I decided it would be much more interesting to add more possible details to this list as a way to both further enhance the variation of religious buildings, and give NPCs and information in the game more to talk about. Therefore: instead of statues, religious buildings may contain ceremonial gongs, vases, and incense stands. Rather than always hearing “The church with the statues that look like X”, you’ll get “The church with the brass gongs”, “The church with the vases that depict two dragons fighting”, and so on and so forth. These are all, naturally, procedurally generated. I’ve created all the graphics for the gongs and also worked on some more graphics for the rest of the ordinary furniture, and my intention is to next work on the vases and the incense stands whilst I move onto programming other building interiors in the coming days.

GONG

I’ve also implemented HERESIES. The average game will have between 3 and 6 of these generated in the game world, and they draw upon the data stored for existing religions to propose heretical notions “logical” (as it were) to the religion in question. Religion worships an animal-headed god? Maybe this sect believes that eating animal flesh insults the god. Religion consists of a pantheon of eight gods? Maybe the sect believes there is a ninth. Religion proposes a kind, benevolent god? Maybe the sect believes this god is actually evil, or at least inimical to human well-being. And so on. Just like all the flags and coats of arms and so forth, heresies have their own algorithm for symbol generation (there’s about 40 or so possible, so it’ll be many games until you see them all) and now show up in the Encyclopedia, where you can read a little information about the nature of that heresy, though this will be added to significantly in the future. Each heresy also has one of three statues – it may be TOLERATED by the dominant religion, SHUNNED, or be the subject of an INQUISITION, in which case that belief will be entirely hidden underground. Inquisitions will be worked on later, maybe this release, maybe next. We’ll see. As you can see, the screenshot below is very much an in-progress screenshot (information is not lined up nicely, there’s no leader data, some of the names don’t fit into the window, there’s an unusually large number of heresies in order to make sure they all generate correctly, a slight typo with “idols’s”, etc), but you can see how these are coming along. Once I implement the leader information, there will also be a list on the left side of the information screen showing what settlements this heresy has been found in.

InprogLastly I’ve also fixed a bunch of smaller issues this week – there were some unusual edge cases with entering/leaving buildings I’ve sorted out, and some residual minor problems with coats of arms and a few tiny other things which nobody except me seems to have noticed (since I know what things should look like!), but those have been fixed. This next week might be a lesser coding week – my intention is to submit my PhD no later than the 30th, and probably on the 27th/28th, so I need to devote time to getting it formatted correctly, having it bound, handing it in, blah blah. Either way, whatever coding does happen will be focused on moving interior generation into other buildings (I think I’ll go for something simple like slum housing next after this religious complexity), and adding in the rest of the graphics for the vases, gongs, etc (statues, being highly complex, might have to wait for now). See you all next week!

Saving Optimization, Interior Generation

URR Development:

This week I’ve been working on two things – improving saving and loading, and beginning work on the technical aspects of handling interiors, keys, doors, multiple floors, and a million other things intricately related to interiors and handling all the appropriate amounts of data. Firstly I’ve made a major change to how the game is saved. Until now each work was stored in a single huge file – “World1″, “World2″, etc – which meant that each time a particular chunk had to be saved or loaded, that huge file had to be opened, examined, and shut. So, rather than a single massive monolithic save file which gets larger and larger with each area you explore, and therefore the computational load of opening and closing that file each game gets larger and larger, I instead present you with a new data folder:

New_folder

Each file is for the coordinates shown (obviously) and contains both the outside map grid, and any buildings that have been generated within that grid. Therefore, that is all that needs loading and saving each time you move between grids, rather than adding something to the massive older file. This has made the initial loading times for the game low, but as more and more areas are generated, it never gets slower! There’s also a code in each of these files to ensure it relates to the correct game instance, to ensure no crafty people switch around the save files to advantage themselves…

This is the first of three stages to the game’s optimization. The second stage involves changing how each individual tile is stored. Currently, every tile has its full set of colours – dawn, dusk, night, in player’s sight, out of player’s sight, etc – stored in every instance. This is horrifyingly inefficient. Instead, it needs changing to numbers that refers to where in the colour database the appropriate colours are found, and which doesn’t save/load them every time. In turn, the third stage is to adapt the rendering code to reflect this. I’ll probably be working on that in the next week alongside more general interior work. As with this first optimization, I expect this to take some time, but if we’re lucky it’ll be just as simple as the file/folder change was! And should hack the size of each save file down by… 40%? Maybe more? We’ll see.

SECONDLY, I’ve started work on interiors. Naturally I want interiors to be as complex and as varied as the external world; you should have to walk around for a long time before you see things “repeating”, and the interiors should be heavily dependent upon civilizations, religions, factions, geography, etc. I decided to start with religious buildings. Just as each one is distinct on the outside and the layout is procedurally generated… so too (as I’m sure you’ve come to expect from me by now) is the inside. The inside is naturally broadly consistent across all religious buildings from a certain religion, but each interior across religions is highly distinct. Some may contain statues, some may not; they’ll have different layouts of things like tables and chairs, *very* different altars (see next week’s update, maybe?), different places for offerings, naturally different NPCs, and also different secrets (if any). So, a religious building from the outside:

Interior1

And on the inside (early days, don’t be too judgemental!) with some chairs (the backwards ‘t’), tables (the tall ‘pi’ symbols), doors within the building and leading outside, statues (in each of the ‘wings’), an altar (purple in this casee) and a staircase leading to the second floor…

Interior2…where we find a corridor running around the outside of the building, and two more stairs leading up to the top floor… but we’ll have to keep that one secret for now.

Interior3

My intention for the remainder of this week is to finish off all possible variations of religious building interiors, which should yield something in the high tens of thousands of possible interior layouts! I’m also having to plan ahead to think about what kinds of secrets should be potentially spawning in these buildings, and how they should be accessed if so, so that’s also influencing the development process. I might also try to finish off all the altar graphics this week; the variation I have so far is amazing, and I think you guys will love them when I unveil them (either next week, or the week after). And that’s all for now, except…

Academic:

In other news, this week I’ve had two acceptances on proposals for the coming year. In April I’m going to be giving a lecture at the Dystopia in Modern and Contemporary Fiction conference, where I’ll be talking about the ecological and posthuman themes in Command & Conquer: Tiberian Sun (a blog entry on which is long overdue). Secondly, in July I’ve been accepted to attend a five-day seminar at the Leibniz Centre for Computer Science on “Entertainment Computing and Serious Games” – I submitted a proposal centered around two of the topics they highlighted in the call for applications (Game Mastering and Content Generation) and I’ll (along with everyone else there) be contributing to a textbook on these topics at the conclusion of the meeting, which should be published in the next year or so once completed! More obviously on that as and when.

This also marks a slight change in blog entry formatting; when, normally, entries are just a single topic – be it URR or general games criticism – I’ll write them as normal, but when things have happened in the past week which cross two of my fields, I’m going to put them both in like this; start with the game dev stuff, and then go onto academic/writing/other stuff. Thanks everyone for reading, and next week we’ll probably go on a detailed tour of some interiors, starting with some more possibilities for religious buildings, the altars and whatnot you can find inside them, and from there on, who knows?

Furniture, Flooring, and Aesthetic Consistency

I’ve now started work on 0.7, beginning with some of the graphics and new objects. 0.7 is all about building interiors, so this means all the obvious stuff – tables, chairs, beds, etc – and the rather more obscure and intriguing stuff – altars, thrones, etc. To begin with this week I’ve focused on two components of this, primarily the “mundane” household/building items, and also the floor tiles for the more expensive and up-market buildings (upper class housing, cathedrals, parliaments, etc). I decided to start working on the aesthetics first before moving to too much coding, as I wanted to have a good image in my head of the world (and the variation in the world) that I want reflected throughout building interiors before I thought about their layout. As with everything else in the game, all civilizations should vary – now, admittedly there is only so much you can do to vary a chair, but I think I’ve done a pretty good job:

Chairs

As well as these I’ve also done tables and beds, and various designs on those too, bearing in mind furniture items are not “to scale” (i.e. they are designed to take up the entire size of the lookup window regardless of their actual relative size). The more up-market the location the item spawns, the more elaborate the decoration, and the choice of wood colour is naturally based on the biome the furniture is found in:

Chairs

Chairs

I also want to take this entry to point out a certain… hidden aesthetic consistency within cities. I don’t know if anyone will have spotted this – and it is becoming more pronounced in the next version – but I rather like this. If you’ve ever looked at the gatehouses in cities, you might notice that there are several different shapes:

Chairs

In total there are five – squares, octagons, diamonds, circles (as best as possible with a tiled square grid), and crosses. Each civilization picks one at random. It’s a minor additional detail, but then if you look at shop signs, you’ll notice that those also have different shapes:

Chairs

The observant player would then perhaps also notice that the floor tiles in cathedrals, parliaments or castles have a range of different patterns based on various shapes (and also their colouring is dependent on the flag of the nation in question):

Chairs

Therefore, in each civilization, the shapes throughout the civilization are consistent throughout! In this case, octagonal:

Chairs

That’s just a minor thing, but I think helps with just a little extra distinguishing between civilizations. Now I’ve done a very good portion of the new graphics for this release already in just the first week of serious coding (perhaps a third of new graphics?), my next task is the challenging technical task of hacking down saving/loading times, and changing the game to saving the map in chunked sections within a folder on one’s computer, rather than in chunked sections within a single massive file. It’s a hefty change, and one of those which will either be weirdly trivial and only take me a day, or drag on for the week. We’ll see. Coupled with this is creating the new infrastructure for building interiors which is going to be handled in the same way, and from 0.7 onwards saving/loading times are going to be reduced to a fraction of what they are now, and  they will no longer rise the more of the world you’ve saved (which it currently does – a serious oversight). Either way, next week I’ll be talking about these technical changes in a (rare) semi-technical blog entry – see you then!

And… some strange altars have been popping up.

Chairs

On Being a Workaholic

I’ve just turned 25. As that’s a) a pleasingly round number, b) my doctorate is finally going to be submitted in the next fortnight and c) I’m moving into a new phase of my life for the next year being between academic jobs and focusing on URR, I wanted to write a little blog post (completely without pictures, perhaps for the first time ever?) about my goals for the next few years (URR and otherwise), how I intend to reach them, and a little about how my mind works (something upon which many friends have commented in the past).

What’ve I done with my life since I became an adult? Well… I’ve studied and played poker to an effectively-professional level. I’m a week or so away from submitting a PhD within the youngest 1% of people at my university ever to do so (now let’s just hope the bloody thing passes). I’ve gone from having never written a line of code in my life to where URR is now, and I’ve taken this blog from nothing to (I think/hope) a really excellent community for both URR/roguelikes but also more general games discussion and critique. I’ve published a few papers, spoken at more conferences than I can count, and got into the global Top 5 in a whole bunch of bullet hell games (though that first record continues to elude me). And yet… I feel as if I’ve achieved nothing, or at least less than I could have. Every day I’m haunted by the minutes I waste on Youtube, or the hours I spend just thinking rather than doing (even though I intellectually acknowledge the importance of a good plan), or the time it takes me to come around in the morning before I can think of doing any intellectual work. I cannot help but think I could have done so much more with my time than I have, even though (and I do not say this pridefully) it is more than most have done by my age. It’s just how my head works, for better and/or for worse.

Today I set myself some goals for the next five years. They are big goals. Some are academic goals in terms of what rank of university I should be working at, number of papers/books published, and the like; some are creative, such as finishing URR by the time I’m 30; one is in terms of this blog, which I want to continue to grow as a place for general games criticism and discussion as well as a devlog; one is a fitness goal; and one is a kind of overall objective for the level of “impact” I want to have had on gaming – academia and game development – once I’m 30. As I say, taken as a whole these are colossal goals; I’ll have to continue working (and I include coding here as “working” even though I enjoy it – I mean “working towards my goals”) 12+ hours, every day (weekends and holidays are no excuse for not working!) to reach them. I suppose in part I’m posting this entry as part of forcing myself to keep them – if I’ve made public how “high” I’m aiming, I can’t really show my face in five years unless I’ve achieved them, now can I?

Anyway. In URR this coming year we’re going to have hopefully four releases – 0.7/8/9/10. These are building interiors, NPCs (!!), strategy layer/travel/coinage, and combat (!!!!). I’m also aiming to have at least three game studies papers accepted to academic journals, if not necessarily published yet (there is often a long delay), present papers at at least half a dozen conferences, and finally snag that damned shmup world record in my spare time. I’d also like to try and break the 10,000 downloads barrier for a new version – 0.5 was 2/3rds of the way there (but was out for around half a year before 0.6 came along), but I’d like to grow the game to the point where I can seriously expect those kinds of numbers for every release (any and all ideas for how best to do this are welcome). One example would be that this year I completed missed the IndieDB “Game of the Year” voting competition, and next year I’m going to be sure to mobilize a proper voting effort rather than being almost entirely absent from the internet over that period…

So there we go – hopefully I’ll be able to meet all these objectives, high though some of them are. Maybe I’ll write another entry like this a year from now and evaluate how it went and whether I have, indeed, achieved 1/5th of the above five-year plan? We’ll see. Either way, standard weekly URRpdates will resume next week with development starting on 0.7, I hope you all have a fantastic year, and thanks for everything.

Addendum: holy crap guys, thanks for the donations and support in the past week (especially JV, I don’t know if you want your name out there, but initials should suffice). They’ve been awesome.

2014 Retrospective

And thus, 2014 draws to an end. What did 2014 mean for URR, for my experience of making URR and everything that happened this year, and where does this mean this game and blog and all the rest of it will be going from here?

2014 began immediately after 0.4, my unwise attempt to introduce gameplay before the game was ready for it. Although I was reasonably happy with what you could do in Ziggurats, it lacked any real spark when the world was otherwise so empty, and I realized that it was time to finish off the worldbuilding before actually trying to add any more gameplay (only one release to go!). At this point I turned to fleshing out the detail of the world, and creating a space to interact with that should be every bit as dense, nuanced, and sometimes idiosyncratic, as the real world of a couple of hundred years ago.

From this work I released 0.5 in April, which gave us history generation, a vastly improved world map, religions, coats of arms and families, religion and civilization detail, and was the first release that took place after I finally figured out what the game was actually going to be about! I was very happy with this release, and a lot of people who had previously been sitting on the fence about whether or not I was ‘committed’ to finishing the game were persuaded at this point. Success!

This also pointed the way to the next release: making all these cities, towns, farms, settlements, fortresses and so on actually explorable, rather than just icons on the world map which told you “You can explore these in the next release!”. So, 0.6 began, and ended up being the longest release I’ve ever done, but also by far the largest. The amount of content in 0.6 is probably equal to, if not more than, all the other releases put before it (especially since 0.1/2/3, back in the day, were basically my attempts to figure out how to program a game whilst also programming a game, an approach which may have been a tad unwise). I committed to making every district unique, every fortress generate according to its own algorithm, and basically maximizing as best I could the length of time until players could/would become “used to” what they were seeing. This process isn’t finished yet, and 0.7 and 0.8 will both contribute heavily to this, but it’s a major development along the path of making URR as dense and varied a world as I want it to be.

Released a couple of weeks ago, 0.6 is the first release that I feel stands on its own, even as just a detailed ‘world simulator’ at this point. Although naturally the four planned releases for 2015 should be great and introduce some gameplay, I don’t feel the need right now to keep telling people “but just wait until the next version!” when they look at 0.6. It gives a good impression of the kind of world we’re dealing with, and something about the kind of game that’ll take place within it, and I’m very happy with that.

It was also during this year that I finally realized that Science and Technology Studies (STS), the field of my doctoral research of the last few years, was not where I wanted to be, and that game studies most definitely was. The first thing I ever did in this field was a presentation on the semiotics of roguelikes (which I am currently writing up into a full journal paper) which I gave at the Canadian Game Studies Association Conference, and the response to this (and my overall experience there) cemented for good my shift to game studies. As such, although right now I’m putting the final touches to my doctorate (submission mid-January, at long bloody last), all my other academic work is now on games. I’m incredibly happy that I’ve made this shift, that my early work has got such a positive response, and indeed that a number of people within game studies have shown an interest in URR themselves. I love the possibility of academic/creative crossover in my work, and we’ll have to see where this goes from here.

Lastly, you may notice a NEW BUTTON on the menu at the top of this page. This is the first step towards redoing/reworking this website over the course of 2015, and is a response to the very generous comments from lots of people who want a way to directly support the game. That contains a link to a donation button, but more importantly, I note on that page that I would actually much prefer that people support the game by ‘spreading the word’ than direct monetary support (though I certainly do appreciate that immensely). So, if you like what’s going on at the moment, and what I’ve got planned for my year (roughly) of full-time development over 2015, please give it a look and see if you’d like to give me a hand spreading the word of this glorious Scientific Revolution world to every corner of the internet.

In the mean time, I hope everyone has a great new year – I’ll be back next weekend with a post about my plans for the coming year and, indeed, the coming five years, and then regular URRpdates and the odd game analysis piece will return to normal the week after that. See you then!