Wednesday, July 10, 2019

The story so far...

I have decided to keep a dev blog of this project that I have been working on for about 6 months now. This is the first post in that blog, so I'm going to have to do a bit of back tracking to get back up to speed. Part of the reason I'm writing this blog is because I realized I'd started to lose track of decisions and work I'd done previously, so I won't be exhaustive with my retrospective here. Not to worry! Hopefully I'll keep track of everything from here on out.

My plan for this blog is to write down important decisions, technical discoveries, or overall observations as I progress on this project. I'd like to say I'll try to update it once a week, but I know better than to promise something like that. Hopefully keeping this blog fresh will be s motivator to work on the project too. I'd like to try to keep this blog more technical because that's the stuff I want to really get down somewhere, but I know I also won't resist posting lots of media and artistic stuff here too. So, without further ado, let's start!

Overview (where the project stands now)

At the time of this first blog post I've made a simple game in Unity. It looks like this:


You can move the character around with the arrow keys, you can't go over the cliffs or rocks, and you can walk up to the NPC to receive some HELLO WORLD dialog. I suppose it's not very impressive for 6 months of work, even at my 1 hour a day sort of pace. So many people (I included) like to ignore how long things often take us. It's very easy to retroactively say "it wasn't that hard" or "it didn't take that long" and quickly forget what was actually involved - I'm getting sidetracked, sorry.

I also have a few dozen sprites across a few sheets. My most recent mockup looks like this:


I also have my 7700 word design document. I'm about to redo a huge chunk of it though (the story/gameplay section) so that's not as tangible. 

In the following sections I'll go over what the journey has been like to get here so far. First, here's a really rough timeline based on my best guesses for what I've been doing with this time:


My Background (why I'm doing what I'm doing)

So first up, I've always wanted to make games. More broadly, I've always wanted to be a storyteller. I love telling stories. I love making up places and things, and showing those ideas to other people. I like making movies, I like making music, I like writing things, and I like programming things: and video game development ties that all together. A game tells a story in a way no other form of media can, it brings the listener/viewer into the world and makes them a part of it. The user themselves get to decide how their story pans out. Incredible!

The desire to make games kicked off my career in software, and I learnt so much of what I know making my own games in Gamemaker back at school and at home. Since then I've tried a few times to work on games again, but time and motivation are slippery beasts. I've managed to stay involved by working on some game projects with fellow students at uni (all defunct) and as a concept artist at W3D Hub. I always knew deep down that I would have to make my own games again one day though. I have stories I want to tell, and I want to explore those stories through this medium.

My skills may seem eclectic, with an interest in composing, writing, history, programming, pixelart, video production, and games; but they all come from my early interest in making my own games. I taught myself these skills all so I could make my games myself. I'm no specialist, and no master at any of my trades - but my jack-of-all trades attitude was deliberate so I could do as much of the work myself and not rely on anyone else.

There are certain themes and concepts that are attractive to me. Living in such a beautiful country and in a forested area has left me with a deep appreciation for nature, for landscapes, for solitude even. At the same time, I have the fascination with industrial vistas and great man-made engines that doubtless comes from being a mining engineer's son. I am an introverted and island person, yet my inner-city education and friendships with incredibly charismatic people have left me with good look into the social world of the Big City. I've always tried to be a responsible and above all compassionate person, looking to empathise with every person, and in doing so have strove for a politically centerist position. I've been jostled both left and right and seeing political activism hypocrisy and ideological thinking has always saddened me. Best not to go any deeper into who I am here, so hopefully that's enough background for now...

The first step - idea formation

I have been slowly brewing my skills and capabilities over years to get to the point where all it took was a solid idea before I could actually begin making my game. This is the fourth game I have attempted in Unity, probably the 30th game I've started overall, the 8th major spriting task I have undertaken, (if I write the music for this) the 5th major musical undertaking, and perhaps the 50th story I have tried to write down. The project I'm attempting is simple by global standards but is the product of years of honing my craft.

So, it was about 6 months ago, at the start of 2019, that I was browsing an obscure page on Facebook and some ideas started to crystallise. I was looking at a page focusing on the sort of meme version of "ecological fascism". At the time it was a sort of an underground meme movement for weird aesthetic and political thought. It had a striking visual style (I'm hesitant to post anything here from it because it's pretty violent) and an ideology that at first glance doesn't fit in our traditional left/right ideological discourse. Extreme violence and terrorism in support of the environment? I spent the next few days thinking about this before coming to the question, what is the counter to such a philosophy? Replacing the words with their (loose) antonyms "ecological fascism" becomes "technological socialism". At this point I knew I was on to something.

The next few months were spent working this idea over and over. Most often by myself, but also with some trusted friends of all sorts of backgrounds and personal beliefs. My eco-fascists and technocommies slowly morphed into more concrete societies with less extreme ideologies and a world to set these groups in began to form. The ecos became the "Arcadians", traditionalists who have a fervent ecstatic worship of the human self - the superman who lives a colossal life as much in tune with nature as with themselves. They would be a small but powerful faction who want to rid the world of the scourge of modern man and return to a tiny, sustainable, spiritual population of true humans. My technocommies became "The Union", a practically post-scarcity utilitaristic industrial society that provides everything it's moribund people could ask for. The Union would have the goal of caring for all humanity, so they may live without any discomfort, and the progress of scientific thought.

I practically live on Wikipedia, and worldbuiling is a general hobby of mine, so building up a reference library was a very quick and fun process. I made some big decisions early on from my previous research. Should the game be set in the "real world"? I decided no, not least because I prefer historical fiction, but also because my Union pretty much demanded a gigantic fictional state. I decided on a time period set in a vague 60-70s setting. I particularity like 70s science fiction styles, and strongly want to have the Union architecture appear as "gleaming brutalism". A strong sense of style is important to me. There's also precedent in our fictional world in this period for my conflict, with the rise of the environmental movement, terrorism, computer systems, and the existence of ideological states in general

The big question now was what do I do with this concept? Sure, I have a solid idea, but where can I go with it? I knew in my heart I wanted to make a game, but I needed to first see that it was a sound idea. Would a movie be easier? No. Would a story be easier? Maybe. But what really appealed to me about this concept was the shock value of presenting these strange ideologies to a person and having them process the two against their own morals and ethics. And hopefully, cause them to then go on to review their own value and judgement systems in a new light. I wasn't sure if I could pull that off in a pure story. But in a game... I just needed to present the player with choices in a compelling way so that they would have to answer to progress the story!

My reference library is full of images and text snippets, things to use as reference for architecture, tone, technology, and fashion. Here's some random excerpts:







At this time, I had started my design document. I worked on it feverishly at first, as if worried I would die before I could get all these ideas out of my head. I started slowing down once I reached the story and gameplay section, before finally grinding to a stop. I plateaued for a long time on the story and gameplay before forcing myself to write a few paragraphs a day. In the end I came up with a branching storyline where the player would make major decisions at certain points in the story, before time would skip forward suddenly, and a new scenario was revealed based on the outcomes of your previous decisions. I expected to have a persistent single world that would be updated each "flash-forward" with the world changing based on your actions. This got really complicated really fast. I had something like 40 unique branches to the story tree. Ouch. It was good enough to start though.

So, the next step would be to do some research into the technical side of this story.

Early technical decisions and work

Unity and C#

Unity was my first choice to write this game. Now it's probably true that there's better tools out there for this job (after all, it's a 2D game and Unity is mainly a 3D engine), but I chose Unity because I want to learn how it works, and at the same time learn C# as well. I can go on using raw Gamemaker or some propriety RPG engine, but by using Unity I'm learning a more generic skill that I can transfer to bigger and better projects in the future. So, my first technical exploration was to look into how Unity does 2D stuff, to see if my existing knowledge and workflows could be useful. Luckily for me, it turned out they were! I imported some placeholder sprites from the old game Yoda Stories (you can see some in the first image posted at the top of this blog) and mucked around with the Unity tile mapping system. It was certainly not intuitive at first, and research revealed it's a very new part of Unity, undergoing active development, but it was what I was looking for. Score! I mucked around with some generic movement programming and started thinking about things like dialog systems.

In my reading I found you can pay for libraries other people have written for things like dialog trees. The prices run in the hundreds of dollars though! I'm going to do all my programming myself for this project. This is because I don't want to spend the money (duh), but also because I want to learn what it is I'm doing as I go. From my previous experience I know I can get anything to work eventually. The code may end up awful, but I can get it to work - and if I'm the only programmer on this project ever code quality isn't a huge problem. That's not to say I'll deliberately write terrible code, but more to say I won't let extreme formalism slow me down.

For the last 4 years I've been writing mostly JavaScript and PHP (5?). It was a bit of a shock going back to the structured world of C#. I tried to implement a generic "I run a function on the other object" concept using reflection before I remembered the idea of interfaces and smacked one in. Once I started to get back into the flow though I had a fun time with what I've done so far. It's neat to be able to pass around objects and KNOW what they are with certainty. However I'm a bit blind at the moment making things like dialog systems from scratch, without my usual toolbox of programming patterns or concepts. I will probably have to do more reading on that soon.

Concept art

I've done some concept art for characters and the like. I'm not sure yet whether I will use any digital art in the game or not. Perhaps it would be useful as character icons in dialog, if pixelart avatars are too abstract or time consuming.

Union character concepts
Arcadian logo concept

Union logo concept

Union logo concept


Spritework

I started on the sprites once I was confident that Unity was able to handle them correctly. I'm working with pixelart as it is where I'm most confident, using a 32x32 sized cell. I've been dabbling with using a strict pallet before I started work on this project, but in the end, I'm going to only loosely follow one here. I made this choice in the interests of speed and in the possibility of using things like automatic lighting, masking, and particles in unity (which all involved calculated colours and things that will most certainly ruin any strict pallet). I did some research into dynamic lighting in 2D for Unity and it's possible, but probably not in the way I want. It works best with blocks that cast shadows, like walls in a maze, and not so great with something like dappled light through leaves. 




I started on my nature sprites as I thought they would be the most fun and useful to start building rooms and maps with. I spent a few weeks on the first cliff sprites, and a few more on the grass. I'm taking a hybrid approach to my sprites so far in terms of blending. The cliffs for example come with half a grass sprite that blends to the cliff, whereas the grass blends go into pure alpha. This means I don't have to create a new sprite for everything I want to blend the grass into (grass->dirt, grass->grass2, grass->water etc.) but the tradeoff is that in Unity I have to have an additional layer above the base terrain that contains the blends. Most tile/sprite forms don't do this, but I think it won't be a problem for me. 

So far, the spritework has been fun, but I also noticed how time consuming it is. I't taken two months to produce the small number of sprites I have now.

Tree evolution:




The future

At the moment my main concern is re-addressing the gameplay question. I wasn't super happy with my final draft for the first iteration of the story and gameplay. It wasn't clearly achievable, and it didn't really grab me as interesting or compelling on review. I've been thinking and talking about the issue for a week now and I think I have a solid idea of what to try next, so I'll get on to fleshing that out. If I can, I'll try to also continue on my nature sprites, and perhaps start some basic building sprites too to check the contract and style of those.

Going further into the future I can't really get past the gameplay issue. It seems weird, but the direction I am starting at is universe and technology, so gameplay is last. Hopefully this doesn't cause problems later. I've got some really promising ideas on what to try next (as above) and this will have a huge impact on the entire structure of the game and all work going forward.

In terms of art I'm happy with my current direction. I've thought about some stylistic things I might try later, such as lighting or (I really want to try this) a colour/tone shader across the entire render. I could probably achieve the same thing though really clever spritework, but it's probably too clever for me.

In terms of music I'm not really putting too much thought into it at the moment. I don't believe the sort of music I usually write is appropriate to the project at all. It remains to be seen whether music will be required at all. If it is, I will probably try to write some very ambient sounds myself but might end up going external if it isn't up to scratch. My preference (based on a hunch) at the moment is that instead of music a very complex and evocative soundscape will suit the project better. Birdsong, industrial noises, etc. I'll address this again soon. I've thought a little about how neat it would be to use relevant licensed music but that's more a dream than anything, I don't believe I'll pursue actual licenses and go through the legal rigmarole unless it becomes necessary. That said, here's some music I've investigated as appropriate for certain elements of the concept:




I have skipped a lot and could talk forever, but there should be heaps of time for all that later. Hopefully I'm caught up enough now that I can move forward and just update this blog with what's going on as it happens.