Even more personal annoucements

And so 4 years have passed. Oddly enough not much has happened since, I moved houses 3 times and worked in 3 places. I found out I am workaholic and my fears about the game industry turned out to be true, I did about 22 months of consecutive crunch (some weeks working over 70 hours), in the end I really felt burned out… it took me a while to recover and I finally left.

Time kinda flew by, but I don’t really complain, I learned a ton and met a lot of awesome people which was the whole point, also succeeded in moving my folks out of Aberystwyth. Now I’m in a much better place, work is awesome and satisfying, new colleagues are ace and I can finally start focusing more on personal growth, etc… :)

On that note… the YouTube thing I mentioned I might try about 4 years ago, I’m starting that now!!! Well, in a sense – I’ve got a channel and I also got twitch but not sure what content to make. I started streaming playing games on twitch first to practice public speaking, and boy, do I suck at it. Unlike a blog post I can’t just go back and edit my sentences until they sound ok, I drew a blank and had no idea what to say, plus the added pressure of trying to be entertaining and engaging (even though I stream for 0 viewers, on purpose). But despite all that it is so much fun. I think I’ve gained enough confidence to not care that I suck and I’m simply enjoying it.

And yeah, speaking in front of an audience is a just a skill that you can learn and improve over time with practice. In theory it is slightly easier with YouTube because I can prepare a script and fake confidence by doing many takes and then picking the best one, but then again YouTube comes with a plethora of other skills to learn like scripting, editing, pacing… so there’s plenty of opportunity to suck there too. But as a general rule of thumb if you make a 100 of something, your 101st will be many times better than your 1st. Skill growth is also generally logarithmic – i.e. skills grow really fast at first (trust me, I’ve played tons of RPGs). So yeah, baby, it’s grind time!!!

Anyway if you’re thinking about starting your own YouTube channel, but are not sure about it, and for some divine reason you’ve come to this place and are reading this blog post – first of of why?! and you’re still reading are you nuts? these are just the random ramblings of a mad man! but second and most importantly JUST DO IT! Start now, make a crappy video and put it out there, you can always remove it later but you’ll learn so much in the process. It’s my most important advice I can give you and take this from someone who hasn’t even started theirs, so you know I am credible and have authority on the subject. Actually that applies to anything, definitely does to making games your first few of anything are going to suck, you’re in it for the long game and the grind, like a true gamer. If you’re not a true gamer get out here… This post slowly transitioned into inspirational, I have no idea what this post is about.

Speaking of which I have no idea what my channel is going to be about. I like making games, playing games, anime and making art… in that order, so probably along those lines. But I also like software engineering, computer science and occasionally mathematics, however those two groups of interests a bit too disparate and don’t quite mesh together, it is already way too broad of a spectrum as it is so what I might is keep the super technical, deep or personal content on my personal YouTube channel, and publish the light and fun stuff on the main channel as lots of people do. Probably should stop writing about it, but I am really excited… plus so far it has been such a blast, I think that may be my new hobby.




More personal announcements

New job as a game programmer at West Coast Software LTD, doing top secret stuff :)
I am now also a proud member of the Dirty Casuals hobby gamedev group formed by my new colleagues and will occasionally be doing stuff for their/our horror game Calamity.

All personal projects that I have been working on before are suspended indefinitely and there won’t be any new releases, because… clear boundaries and such, however will be working on new smaller open source projects.

I will try to write more broad and general articles on development and design and will play a lot more games… and will maybe do game reviews ^_^. At least those are my plans regarding this blog thingy. There’s a really tiny chance I might try YouTube as well, but I know I’m too shy for that, plus, time constraints.

Unofficial Updates

It took quite a while but I finally got multiplayer networking working. The reason there is no official “Weaggles World War” update post yet is that although (most of) the functionality is there I still have GUI to design and implement… there are also a few new features.

Way back in October and November I also did some work on Winning Streak. The changes there have to do with scoring, the combo builder, physics, fireworks, character animation and IK… these probably make no sense when squashed together in the same sentence, but I’ll try to post a (first ever) detailed post on Winning Streak on this site. Last week or so I have been fixing some unfinished things I had left in WS… still a WIP. I want to eventually (and preferably soon) make another release, as the change log is growing bigger and bigger.

Last, but not least – this is just about to arrive by the post
ccnfvmkWith Occulus Rift CV1 coming out in a just week and Vive in two the hype is real. I won’t be able to invest into an expensive dev-kit but it occurred to me that Google Cardboard is a thing. I really like the idea that you can turn pretty much any mobile device into a VR kit just by adding lenses and strapping it to your face. I have quite a few VR game ideas I want to try eventually. Also I can imagine how cool WS could be with it – instead of watching the game through the TV (as it is now) players can actually be there on the bench as a part of the the audience enjoying it in its full glory.

EDIT: It looks amazing, unfortunately my phone has no gyroscope (DOH!)… so no head tracking.

EDIT 2: Since then I got a new phone(s) and a better cardboard, it’s awesome, head tracking still missing movement, but I can turn my head ^_^. Did so much VR, it deserves a separate post.

Weaggles – The fancy graphics update

Last week (or two) I’ve been working on various aspects of the tank game. There have been quite a few changes and here’s a quick run down:

Awesome graphics

Unity 5 came with loads of goodies I didn’t have back when I started the project. One of them is the improvement of the graphics engine and the addition of physically based shading (and global illumination). Others are the availability of image effects and reflection probes in the free edition of the engine.

An image showing the differences between the legacy shaders and the new physically based shaders and image effects in Unity.

After tweaking materials, sky-boxes and lighting settings a little the effect was mind blowing. The second image is a bit of an oversell as Unity 4 did have reflective shaders (but it wasn’t that easy to set up, and also they didn’t blend reflections from different cube maps).

Among everything else I made the water look nice. By using both the main and secondary normal maps on the standard shader and animating the two offsets to go in different directions you can achieve this effect:

Animated water

…which is pretty much what the legacy “basic water” does, but better as it works with the standard shader instead (C# code here).

I wanted to keep the toony look so I went ahead and added a few fake image effects on top of everything :

  • an exaggerated ambient occlusion to increase the presence of blackness (and the contrast a bit).
  • a bloom effect that makes bright areas look even brighter;
  • anti-aliasing; and
  • a bunch of different blurs… just because

Exploding Weaggles

With the new terrain and revamped physics movement it becomes easy to get stuck in a hole (which is far worse than getting destroyed). To fix that weaggles can now get angry and explode in rage, destroying everything nearby… just like bombs (they even get the same red coloring). The explosion doesn’t happen instantaneously, you have to charge it for 3 seconds by holding a button, and you can cancel it at any time by releasing the button. You can’t take the enemy with you on reflex right before they shoot you, but you also won’t explode by accident. Despite the charging time, it’s a great utility that’s always available when you want to blow things up.

A Short animation of a weaggle getting angry and expliding.


Another gameplay change is with the bullets. They are now truly physical (and along with them pick-ups became rigid bodies as well). What this means is that bullets are controlled by forces and also upon collision apply force to other rigid bodies they come in contact with.

Pushing a cog by firing bullets

This new mechanic allows you to push object from distance, ones you cannot reach otherwise or ones you don’t want to approach (such as bombs). When first shot bullets are unaffected by gravity (and behave like they used to), when they hit something they apply damage, ricochet in a random direction, fall to the ground, and remain as harmless rigid bodies for a while. This is interesting because for example you wouldn’t be able to push a crate by shooting directly at it (as that would break it), but if there’s a convenient wall next to it you can bounce bullets off it to make the crate move.

Did I mention that bullets now have a new model, leave a trail and create sparks when they hit something?

Screenshot showing the new bullet model and the trails they leave


Last but not least I managed to get it running on Android. I tried building the game on Android right after I applied all the fancy graphics… big mistake. It was running with a frame rate of about 3 FPS. After reverting all that and reducing the terrain quality (as its resolution is pretty high) it was still performing poorly. Profiling showed that physics was eating the CPU, after reducing the quality of the physics simulation it now runs at 20 FPS and it looks something like this:

Mobile mock screenshots of landscape and portrait

At first neither portrait nor landscape looked right on my device, the camera was positioned wrongly. As a generic solution I animated the camera with the aspect ratio as a control variable so it should now look right on any aspect ratio (regardless of the device).

Another thing I did in relation to mobile was to atlas the textures and start putting everything into a single material for which the new rendering engine proved again ingenious. Just by using the new standard shader and a single material you can render all diversely shaded objects in the scene which was not possible with the many families of shaders in Unity 4. When switching to mobile you can now simply change the shader of a single material, which is amazing.

Coming up

I plan to dig into multiplayer again sometime soon, the new networking API solves a lot of obstacles I had stumble the last time I tried it. It is now quite easy to make mixed local-network multiplayer and also quite easy to allow players to join at any time.

A recent screenshot of the level. Shows the Unity terrain.

Destructible meshes, terrain and physics.

It’s been almost a year since I first started making Weaggles World War (the tank game), then there was a jam, then there was Winning Streak and then my summer job. For quite a while I had not opened this project, but last week I finally did and I started toying with it.

Unity 5 had broken a few things – some were easy to fix, others slightly less. The biggest problem I had (and still have) is that the collisions are now much more sensitive and sliding a box on a floor made up of boxes is not possible as it catches the edges of the boxes bellow (this problem). There probably is a workaround, but instead of fighting I just accepted it and decided to use a more interesting alternative – unity’s terrain. So, the old 3 levels are still there, but not very playable, and I’ll be making new ones using terrains. One handy trick that comes with height map based terrains is the ability to deform them at runtime, raise mountains or dig holes, make craters, etc  :)

I also tweaked a lot of physics and control settings. Tanks no longer move in set increments (no more ForceMode.VelocityChange or transform.rotation = X). Instead everything is internally controlled by forces, the way physics is meant to be.

I allowed crates to rotate freely on the map (not just the y axis as they used to) and with that I had to change the way the bouncy damage animation works (as they would jump on their local up axis… nothing drastic).  And last but not least – destructible meshes. Crates now will shatter when they take enough damage and spawn physical shards (which will disappear after a while). It just makes destruction so much more pleasing and makes you want to break a crate as soon as you see one ^_^.

A short gif video of destructible crate meshes.

Destruction! Yeah!

The shattering effect is not perfect as it’s a crate made of planks and the shards are irregularly shaped, but it does the job :)

Featured edit screenshot

Winning Streak – or how to achieve epicness in just 3 days

Play: here

After 3 days of sleep deprived struggle to get on top of things and add as many features as possible we finally did it. The jam’s over and we submitted in the very last hour. Over 900 games entered the competition along with ours.

It is silly, funny, bizarre and extremely buggy game. It completely exceeded my expectations and at the same time we couldn’t add everything we wanted and at the moment it is this cool thing which is half made.

The game is called Winning Streak and is at gamejolt. You play as a football streaker who wants to get some action, he runs about and avoids being caught by the football players and can also perform “tricks” to score more points. The idea is that it is being watched from the cameras set for the TV broadcast of the game and there are two commentators who narrate his actions and make funny remarks. It’s not a completely original concept, it came from these two games: The Streaking Game and Streaker 2013.

There was 10 of us on the battle field:
Patrick Lacey was writing the commentator’s dialogues, and Logan Byers and Frankie Fiore voiced them. Fredrik Larsson, Marcin Mazurski and Danil Tabacari worked on the 3D art, while Twimper and Xylra did some of the 2D stuff. Jake Thorne and me were doing the coding. We all worked pretty well together, especially considering we met less than two weeks before jam.

We’re currently pushing it further and want to continue development.

Here’s a promo gif :)


Status Update (10.11.2014)

There is no release this week. Why? (here come the excuses) Well a couple of disasters stroke me: first there was my birthday, then I got sick (and still am), on top of that I’d decided to dive into online multiplayer code.

Oh.. the multiplayer code… I’ll get the hang of it, eventually. I had to learn a lot about how networking stuff work in Unity. Furthermore before I can make a fully functioning online version I have to revisit all of the game logic so far to make sure it works as expected and syncs across multiple instances of the game. On the other hand I’m glad I decided to do this now before there is too much content.

I don’t know how much it is gonna take before I finish this quest, but it doesn’t seem like an easy feat! So at least two more weeks. I’ll keep you folks updated  ;)

I chose a name for the game – “Weaggles: World War”. Because it abbreviates to WWW :D. Also “Weaggles” is also a very unique (made-up) word which is always a good thing. A close runner up was “Weagles: Waging Wars”, it lost because “world” can be associated with online (as well as the WWW).

In other news in two weeks time I’m taking part in the 72 hours “Indie vs PewDiePie” game jam hosted at GameJolt. I have a pretty funny idea and an awesome team, and it’s gonna be loads of fun. I need to get a lot of things ready before the jam starts (collaboration tools, streaming and recording, and other bits of tech) so it’s unlikely that I’ll do any progress on this game. Ah yes, I’ll be streaming the development on Twitch (as SuperIzzo), so you’re welcome to come :)