Sunday, January 31, 2016

Getting focused

When I write here I generally (but not always) have an idea of what I want to write about. From that I put a heading which become some kind of vision or what to call it. However sometimes it does miss the mark and sometimes as I am writing it turns out to be something completely different. In the latter case I might well change it. However today I've chosen "Getting focused" and the loose idea I have is to talk about something I actually already did talk about, (and really with the idea of trying to write most every day it is inevitable). I have now worked on the prototype for smelly memories and am putting it to the side because we are going to have a review of it before we do anything else. So that frees time up to work on my own projects again. And the question, and nuisance I feel tempted to call it, is what did I do last, where to continue, and how to get in the mindset again?

This is difficult and most times I feel that you might have to compromise your previous flow and just get down to it. So I know I were working on the hat thingie which I feel would have some interesting perspectives and a first way to tie it all together. I also am writing a pretty involved story, (i.e. takes more effort to get back into). The other things I've been doing is logotyping and designing and well I guess the place to restart now is the web-page (and ergo teh hat).

So that tells me where to start at least. I wont talk much more about it now as I rather get to it and not talk too much more right now as I don't have much to say, but that is where my focus will lay going forward for now. So I can soon introduce the website as well, I will do so when it is still super rough. But it's still a little ways before it is at a level where I can make use of it.

That's it for now. I do intend to make the next about producing crap content and the importance of it, fascinating subject and something of great importance in the process of producing epic content. So if I have produced enough garbage when I write next that might well be the topic but I might change my mind.

Saturday, January 30, 2016

Props and some thought on that.

How to know what content one need, and how to produce it, and what quantity, quality and how do I know what I need? I mean it might be quite easy to create many of the needed props and there is most certainly props you can be sure you will need. But you'll still need to figure out what you need, and what I am getting at is that you need to know what you are building beforehand, then plan what props are needed and then you can start creating.

I find this to be a bit of a catch-22 as it would help tremendously to have a props-library with the correct look and feel to build levels, but on the other hand to know how to build the props you need to know how the level will look and feel. So one option is of course to build the level and refine the props and adept the level, and this is actually quite close to (not to say exactly) how I prefer to do it. Other options might be to just start out making some props that you know you can make use of and go from that end.

It comes back to the way I like working with projects the "make a complete game then refine till done" approach. So this means do no props at all to start with even if it is (and to me it always is!) to start with. I mean the look and feel you really want concept-art to get any way. And concept art at this stage is a great thing, but it is not a deal breaker to not have all the concepts clear. I would now like to focus on level design. It depends on a lot of factors of course the games I focus on at the moment put importance into level design and it is reasonable to focus on level creation. In other scenarios it is less important, depends on the game.

So I would go on and create as much as possible with simple geometry. This in itself is an art form and it's super difficult to not feel compelled to start edging out the roughs and getting detail in. But it's kind of important to keep it in your head, or in your vision for now as progress is more important! When the rough design of the level is created it is time to start with props and make reality of the vision. You can already kind of play your level and you will have a good feel of how your vision fit into the design you've made and this way you already know what props you will need (or at least most of them, and most of them is enough).

Since you already have all the game play in place the next steps will be in creating and molding the visuals and of course expect some tweaking until finished, and here finished is really up to you yourself, as you are already done before you start.

I like to take a level from Super Mario as an example, or even better the Captain toad levels of New super Mario 3d Land (I think is the name). The Captain Toad levels are really limited and will have a set number of elements to work with. If you decide first what to do in the level, and the steps to clear it, it is easy enough to build the level with that, form there it is easy enough to build a working version of the level with simple geometry and from there it is again a simple task to replace graphics to land in the right look and feel.

The reason I thought about this now is because I just finished up the level implementations for Smelly memories and while I've been keeping busy doing this my associate have been keeping busy animating (the games graphics is made from built dolls and stop-motion animation so there is a lot of work going into that). So first she would put together a sketch of a level, in a step by step manner, draw it with simple graphics and we then break up the graphics and build the level. And now all the levels are done with the functionality and sketches so we'll be hard at work soon enough to replace the graphics and create game-animation and so forth but it is a huge milestone really, and the way we've worked is the reason it will be finished.

Friday, January 29, 2016

Sick Leave

I am sick and have two kids this is reason enough to not focus on writing for a couple of days, I guess I am starting to feel a bit better however, and perhaps I have more to say tomorrow. But for now I just wanted to write something. And this would be it.

Wednesday, January 27, 2016

Me, me, me!

Ok, so I hope you are starting to get as tired of me as I am as this post will tie together the last parts which I still haven't talked about. And I can start writing about other stuff after I am done with it!
It will be great.

I am writing this with a man kind of standing a couple of feet away, it's a bit unsettling but well what do you do, I helped out trying to find people and I don't really even know what I was asked to help with. Now he is talking in phone and I am starting to think he might be contemplating something devious against me! :P

Anyhow, me and my family were done in Skövde, my efforts on Magicka 2 was all in place and I were quite excited to read reviews and hear comments on the game. However as you might know those things you spent so much time and work on never seem to be what others look at. I read reviews and stuff and nowhere did anyone say: "...and you could see the work which went into making that liquid go solid under your spray and the AI would adept to the circumstances" instead they might say: "The AI is a bit predictable and a bit too aggressive in it's chase!". However it's how it goes really, I mean I may also choose to be proud that no reviews took any of the stuff I worked on as a bad example, I mean if they didn't say anything bad about it when critically reviewing, it couldn't be too bad at least.

So I got a job working in advertising and mainly worked in javascript to create html-banners, and it might seem boring but it was actually a lot of fun. You really get to make use of the powerful tools and ways to work with them creating really awesome content! It is super fun doing banners, it's fast pace so you don't spend too much time on the same project and you always have something new to work on. It is generally quite rewarding.

At the same time I started out working on a project called Smelly Memories which is a small traditional stop-motion animated game with feminist values. I am really happy to have that on the side and I am in the last stages of finishing up the mock ups for the last level!

I however got an offer to work on a game which I couldn't say no to. I really didn't want to leave but at the same time I am a big fan of Robert Kirkman and his works, I am a fan of Skybound and the job I said yes to was one where I would work with a Skybound IP with connection to Norman Reedus. I felt like I had to take it. I however weren't at all happy with the work environment or the feeling I had at the place and I only stayed a month because I felt that it really weren't what I had hoped for.

I then started to look for a job, a job where I would like to be, where I could have more responsibility and where I could still have the time to see my family. In some kind of broader perspective I also wanted a job where I could start and make realistic and serious planning for a business-idea I've been carrying for some time. So I went to a couple of places but landed at the university hospital working in registries. And it's where I am at, the reason you are reading here is because I am at a place where I see a long term situation and I am starting out planning for the business I want to create.

It will still be some time before I am ready to move on, and I will be writing here daily because it is fun and rewarding and it is nice to see that people seem to read it. Now I am super tired and almost at home I added some parts so that I can publish this post, soon I have to get off the subway.

Tuesday, January 26, 2016

Me, me, magicka2!

So on we go as travelers in the endless (it seems) sea which represents my life. We have talked about school, early years, living abroad and a lot of stops on my career. And we will journey on now to that new job I was offered.



As the title might have told you it went to Skövde to work for Pieces Interactive hired on contract to work on Magicka 2. And I got a nice and well rounded role in a manner only a small/mid -sized company offers. I got to work in a lot of different parts such as tech-art and rendering/shaders, more pure gameplay, physics such as the rag-doll system, decals and the decaling system, water and how it freezes (this was a big one as you basically freeze water dynamically in Magicka so that you can walk on frozen parts, AI accounts for frozen parts, physics collide with frozen parts and so on, so basically it is no small task to implement the system to dynamically do this).

Anyhow I wanted to like have a stop on each of those listed topics and talk a little about my experience from them.

My role as technical artist

This is a bit of an overstatement as typically the technical artist is also an artist. My role were more in the render-programming family. I mainly worked on shader-code but also things like bringing in SSAO to the renderer and defining render-passes. Mainly I became sort of a consultant for the artists which defined as best they could how they wanted effects and I tailored them as best as I could. We basically had two options one über-shader and specific shaders. The bigger works I did in this area were for decals and for the water/ice shader.

My role as game-play programmer

I didn't do all that much gameplay actually but I worked a lot with the status system, which basically was the system handling statuses. Such as burning, wet, electified, frozen and so on and as anyone that have played any of the magicka games will tell you, there is a lot of deapth in spell-casting and statuses. I also feel that I might push into this scoop the game-pad work I did. I made the input handling for game-pad for the GDC exhebition and there are some pretty difficult-to-get-tight mechanics there. Basically you may tilt a percentage on your right stick to rotate but tilting full starts charging spells, and triggers beems and the likes. However when letting go of the stick there is another percentage threashold indicating casting the charged spell, or canceling the beam.

My role as physics programmer

I did some work on physics and the main area were for the ragdoll-system. Magicka is one of those games where spectacle things, powerful spells and whatnot is quite common. The ragdoll-system is in it's easiest parts just that, turning enemies (and the likes) into ragdolls upon defeat. So I didn't do much with that. The system I designed however were a bit more involved in how forces would effect ragdolls and how to apply forces on enemies becoming ragdolls. So every explosion and the like depending on type applies a huge amount of directed forces on ragdolls and this system ties it together.

My role as decal-system-developer

Best picture I could google showing some decals, and there actually are a lot of them it's just not always obvious.


This is something that kind of grew a bit bigger in a feature-creep fashion. Basically we had a system which didn't really do what we wanted. There is many decals in the game and there is different types of decals. Mainly there is static decals and dynamic decals, where dynamic decals are what you get for example when spraying fire. The system is a box-projection type decal and while I was doing it we realized that we might as well extend the decal shaders to make use of normal-mapping and specular-mapping. And this is not trivial as normals doesn't easily map in this fashion (because the idea of the boxed-projection becomes difficult as normals move up on the sides of the box). However I am quite happy with how it turned out.

My role as liquid-system developer

shows some of the effect of ice in the edges the alpha reference become lower and so you get the small islands.

This were a huge effort and it touched so many parts of the game as a whole that I were almost overwhelmed before putting it behind me. Basically there were liquid i.e. water which is a plane with many polygons and a shader to render water. However it also has to be a shader that renders ice. So first of all I had a bit sent to the shader defining how much frozen each vertex would be. So zero frozen would render water while moving up toward one (i.e. 100%) to be completely frozen. However how to handle the frozeness isn't trivial, I mean you can't really make use of alpha blending or anything because it will not look good. How we solved it is by using a "cracked" alpha from 0 to 1 and using the amount frozen as a 1-bit reference into that alpha-map telling us if we need to render or not, giving us small ice blocks when it's not solid, so when sending zero no ice will be visible, and when sending 0.5 we would have islands of ice visible while sending 1.0 would give a solid ice. This needs to render in two passes as we still want water in between the islands. So between two islands there is a kind of alpha gradient from one at one island, to zero in between the islands to 1 again reaching the next island, and the frozen-amount tell us which alpha-value to render a lower value goes toward rendering none of it, a higher value "creeps up" and make it feel like the ice builds up so to speak.

Adding to this physics need to be calculated if the polygons are frozen, but splashes and the likes needs to be created for when there were no ice. That was also a bit of a painful experience. :P I also had to create a way to interactivelly model the navmesh for dynamically change so that enemies could and would chase you out on the ice. Most work actually wen't into this system during my time at pieces and it must be one of the most complex and biggest systems I've ever written.

In the end we actually render highlights in a specific map on top of the water to get the white high-lights on the top of the waves, just to add to the complexity. ;)

It was really fun and I got to do so much different stuff working on Magicka 2. I will if it is possible get some development images and perhaps videos in later as edits or in a later post. Next time I will continue on telling you how we went back to Stockholm after my year at Pieces and how things progressed up till today. Then I can start focusing on the future once more!

Monday, January 25, 2016

Me, me, me!

Phew,a lot of content last time, and today I am going to try to progress a couple of more years. Otherwise I am hard at work with my day-job and my extra-job. For my extra job, (smelly memories), I am finishing up the last levels mock-ups. There is still some job to be done but it is coming together nicely. We have been working in a fashion which I really like a lot and it's a bit of a way for me to test ideas about how to make progress without pressure focusing on it being fun rather than a focus on progress. It is most fruitful I must say.

We do also work in parallel with the graphical resources and the game. Mimi has a background focused in films and animation and is really good at it, while I have the background focused in games and programming. Since we can't really do much for each other we try to make everything needed in order to put it together. For me this provide a nice way to work. What we've done is that she in the role of designer and the person with the vision, Mimi put together a cutout sketch of each level along with a document outline of the level-flow. So basically I know how the level is meant to progress and have all the resources to make it happen. The resources aren't animated, it's just stick-figure quality placeholders. But the thing is that I can do most if not all game-play with this and we can start bringing in the real resources which will be a pretty small step once they are produced. So the model pretty much looks like this:

Some notion of the process just a quite rough sketch of how it is put together. The main idea is that much of the resources are developed in parallel to the game's development and the two are mashed together ending up in something quite close to the finished game.
 Anyhow this isn't really what I meant to talk about today, but it's fun and it's some great ideas behind the way that we work with this project. And I am nearing the completion of the whole first part!

So back to the beta of the selling knowledge online idea. We had the investment round and it dragged out on time and so I were offered to do a job as a consultant. The job were to create the iPhone e-shop application for Dustin. I did have some iPhone experience and it seemed reasonable to make use of that. I made the application, (this time using UI-Kit and the likes which I had read up on by now), in just over a months. It still were a pretty full featured experience complete with listing categories, search-functionality, shopping-cart and login and user handling. The app itself were a hit and it saw the first spot on free downloads in the Swedish app-store!

However after my contract I had the offer presented to go to Switzerland to work and we decided to do so. I still worked spare-time on fruit snatch and we moved to Switzerland. I only stayed 3-4 months or so because it really weren't what I was looking for. And so we came back to Sweden where I started working at a company making software for 3G-dongles. I got the position as Apple-developer and I loved it! I had all the responsibility I could ask for and my boss put complete trust in my ability. I still remember the interview where we mainly talked about games, Buffy the vampire slayer and other common interests. I were there for around 1.5 years I believe. I also had my first son during that period. And I had now left Fruit Snatch behind me, and did get some payment for the job but mostly I felt glad it was shipped and off my back, and I believe that's how the rest of the people involved with it felt as well.

After this period started a somewhat turbulent (yeah, even more so!) time. I wanted to get back into games for real, I have this fiery passion for game-development and it just didn't seem to cease. I got a job at blocket which I hated, I wont go into details but it weren't for me to put it quite simple. I then decided to take a breather staying at home with my son for some six months, and there it were an old friend from my old gaming company asking if I wanted to come there to work on a project they had landed. It was a quite big ip, (in the million-copies sold region). And after looking over our economy we decided to take it even if it weren't the best step as far as stability we decided that my dream were more important, and my wife also saw an opportunity to do some studying at the university while we were at it.

I will stop here for now as we are entering a bigger chunk of events where I want to delve a bit deeper into specifics. As this post is already a bit lengthy I feel that I want to save the rest for next time.

As always I do appreciate the increasing number of readers, as it either means more people stumble onto here, or that you as readers are sharing which I am quite grateful for. Please do share, follow me and interact with me on Twitter and keep reading as it makes it so much more fun writing for every little digit representing visitors I see.

Friday, January 22, 2016

Me, me, me!

Ok, I ended up writing a quite thorough anecdote yesterday so I had to go back and look through it to understand about where I left off. I guess I had talked about living in Brazil, studying a year in Luleå and should pick up from when I moved to Stockholm.

So I actually weren't all happy in Luleå, my student loans were all used and I really didn't have a very good prospect forward. I didn't know how to solve that situation but one thing were clear to me and that was that I really couldn't continue in the current direction. I more or less had decided that I would go to Stockholm as I always wanted to do so, and I figured that the work situation was much better there. Add to that mix that I was talking to a girl which seemed quite interesting I really had nothing keeping me in Luleå.

So as soon as my contract were canceled in Luleå, I moved to Stockholm. I moved in together with the girl I mentioned in a two month contract for a student room while looking for a more long-term living arrangement. I still didn't have a job but she did, so we actually had an arrangement where I worked on stuff to show off my skills and most of my time I wrote applications for jobs. Being desperate for something makes you look like a quite unattractive option. And that was most true for me. However after a little while I got lucky and got a consultant type job working at a start-up on their initial release of a new service on the web. The basic idea were to trade information in a way similar to eBay, where the presumption were that people have a lot of knowledge and others are interested in it and perhaps even willing to pay for it? It may sound like a crazy idea in some ways but actually at the time I still believe it was an interesting thought and a quite interesting experiment if nothing else. I also had gotten a small contract from "friends and family" to update a domain for a company. I kind of went over the top on that one and created in php and javascript along with mysql a quite deep system where they would be able to customize and create as they wanted more or less. I would argue it was a early CMS and it actually ended in me feeling that I just wouldn't get much money from it so I gave them the code and said that they could do what they wanted with it as long as I didn't have to do more with it.

I mean I was kind of desperate for work at the time and as it weren't enough with an under payed contract and the position as architect of the start up I had been in contact with a British company which I felt were really cool, I liked the people and what they were doing and we kept in contact more or less back from when I stayed in London where I had an interview where we had a mutual interest but they didn't really have the resources for hires. However they came across doing an iPhone application and felt that it was something they could out to me. I am not sure why they did it perhaps they felt that we had a good thing going and wanted to be kind, or perhaps they actually had some positive effects of hiring me to do it. Any way I did it but I had no idea how to work on iPhone so I made the soundboard applications (i.e. buttons with sound-files coupled) in opengl as it was what I knew and the sounds in openal. If you aren't familiar with the platform or the concepts I can assure you that it is a lot of work to do quite simple things. It took two weeks or so to get it together, but I got it done and got payed for doing so, and it led to the opportunity for another project.

So at this time I were doing full-time start-up during the days ans working on this new iPhone project on the evenings. I weren't super engaged in the start up but did the best I could and we were nearing the investment round for witch we would show the beta of the platform. And I was hard at work on the iPhone game during evenings.

Let's take a sidestep to talk a little about the iPhone game. The game design I got was for their own IP about Leon the Chameleon and the game were to be called: Super Yum Yum, Fruit Snatch. The design outlined a game where Leon was moving on a flat landscape a bird was dropping fruits for him to eat. And basically the idea behind the super yum yum games is that you can only eat the fruits with the same color as Leon. Leon typically starts out green. If he eats a green fruit he will turn into the color of the tops of the fruit. The original games were puzzle games where you had to figure out in which order to eat the fruits to eat all and clear the levels. So something like this:

Green Leon eats green fruit

Green fruit has red top
Turns Leon red, now Leon may eat only red fruits
 Ok, simple enough right? So the game I were asked to do this was pretty much it. I however saw potential and wanted it to be a bit more. So my first addition to this were to give the fruits some physics. As the game play randomly picked the next fruit you could end up only getting the wrong colored fruits, so I also wrote an algorithm to favour fruits of correct color. So it's more likely that you will get a fruit that you can actually eat, but still the reason you would miss a fruit is either because the pace is too high or because you were unlucky with the colors. I had a hard time letting that be the criterion for success. So I added in that you could still lick the incorrect fruits but instead of eating them it would apply force in negative direction i.e. give them a push in the other direction. So now you could play squash with the fruits!

I kind of got carried away and added more and more features such as power ups you could collect, we also added (I can't remember but I don't think this one were my idea) a chili fruit which would basically work as a power up where Leon could eat any colored fruit for a short period of time.

The game grew and sadly the technology and renderer I wrote started to be quite strained and we started to experience performance issues. Not severe but still noticeable. I actually kept on working on the game for evenings for some time after the mentioned beta of the selling-info-online project were done. And in the end it mostly just felt heavy and boring to wrap up the problems still persistent in fruit snatch. However the last steps, such as advertising and "packaging" were done by another developer. But I am still quite proud of the game and it was fun to have so much freedom and creativity in creating it. I wish I had limited the scoop so that it hadn't become so cluttered and difficult to work with in the end. I will put up some screens below for every one's amusement.

Phew these posts are becoming huge and I still feel like I am just skimming over all of it. But it's nice to write, and seeing the numbers of reads I get on the posts I get a notion it's pretty fun to read about as well. Please do share and follow me on twitter and the likes if you do like reading it all. I will be making progress on the underlying stuff which were my reason to start blogging as well, but as I've said before I am too busy at the moment with other engagements to really focus on it, so for the time being you will have to make do with the Me, me, me! texts. I am writing down my ideas for what I want to blog about when I've freed up some time and I have some rather interesting topics building up. But yeah, do share, and if I don't know you too well I would love comments and interaction as well!

here is a review of the game.






And let's wrap up with some game-play!


Next I will continue from where we had the beta ready and how we progressed from there, and that will take us much closer to today's date. But I am convinced there is a need for a couple of more posts before we are at today's date.