Vulkan just dropped – here’s what I have so far

Today marks a new milestone for game developers like me: In love with Linux, Game Development and willing to setup a framework for their development endeavours! Vulkan finally released and drivers from hardware vendors are dropping everywhere. nVidia released their own for both Windows and Linux. The Open Source Intel driver also hit the interwebs a few minutes ago (thank you Raven67854).

gpu_support

Thanks to @mikekasprzak for the image!

First day caveats

Now, I’m bound to an Intel GPU at home (Iris Pro 5200) and thankfully that is supported.  However yesterday I ordered a x86 tablet so I can take my <future> development framework on the go (check up my articles on doing game development from a <android> tablet here). The problem is that said tablet is still on a Bay Trail GPU and as of this writing the Intel driver does not support any gpu that is not Broadwell, Cherryview, Skylake, Broxton or Kabylake. So not a great start but hey, I can work around it. Will require two separate renderers (Vulkan and OpenGL) so I can still do development while on-the-go but I’m hoping that in the future support will be added for those GPU’s. On the bright side, I now have a tablet I can install ubuntu on!

come_and_gets_it

Vulkan resources

So, here’s what I have so far! There’s a mother-load of Vulkan examples that dropped on Sascha’s William github! The official Vulkan’s Khronos Group homepage has allot of API references and specifications. There’s a Vulkan CPP wrapper running around courtesy of Chris Hebert which you can clone/fork/use from here. NVIDIA also released quite a few Vulkan examples on their developer’s portal. Get them, and the drivers from here. LunarG’s Vulkan SDK’s and tools are also up and available at this address (you need to setup an account). There are also allot of Vulkan events appearing on meetup dot com, events announced, hosted and/or endorsed by the Khronos Group, like this one (I’m really hoping that someone will host such an event in Bucharest, been itching to catch a flight to the capital for a while now).

What's next?

For Vulkan? Hopefully, allot of things! The Talos Principle vulkan-powered version should drop on Steam any day now. The same goes for Dota 2 and a few other Valve games. For me? I’m just starting to go knee-deep in Vulkan code and setup my development framework. The plan? A small 3D rendering engine coupled with Lua for scripting and a few tools I’ve been itching to write (cross-platform Level Editor, UI Designer, etc). The idea is that someday I’m hoping to go indie again and I want to be prepared. That means having some savings, tools that I have FULL CONTROL over and enough technical challenges to keep me motivated! I’ll also add a new blog category for Vulkan specifically where I’ll share my impressions of using Vulkan starting today!

 

Have a great day!

Advertisements

Using Unity (3D) 5 on Ubuntu! How does it fair?

It’s 2016 and that means I get a fresh new attempt to update my development environment! I’ve dropped MOAI and my Chaurus framework 5-6 months ago, in favor of Unity. Been using Unity 5 at work for quite a while now and I’m comfortable enough with it. And since Unity officially embraced Linux as a development platform I decided to take it for a spin on my home development computer. How does it fair? Egh….. it kinda works!

Installing Unity 5 on Ubuntu 15.10

Ubuntu is the officially (yet unofficially) supported Linux distribution for running Unity 5. To install it all you have to do is download the latest .deb file from the release post on the Experimental Linux forums from Unity3D.com. Make sure you scroll down to the last post to get the latest version. Download the .deb file, run it and install it via the Software Center. Other debian-based distros can also get away with installing Unity via the .deb file using GDebi or the terminal. There is also a platform agnostic script on the forums, but you are required to hunt down and install all needed dependencies manually. The download is 1.1GB in size so, depending on your internet connection, you might want to brew yourself a cup of coffee think really hard about your choices in life. Now, once the download is over….

5 Bugs you are going to run into after the download completes

Yep, there’s a reason the forum category is called Linux Editor Support & Feedback (Experimental)! First bug that is bound to creep out on you will be the Unity Splash Screen and a blank window titled “Recent”! There are the default screens you see when you load up Unity on Windows or OSX (and now Linux ♥) only instead of allowing you to load up or create a new project it will just stay there and wait! Now this happens because the “Recent Panel” is searching for project files in a folder it never got around to create. Continue reading

Kicking off 2016 with a 24h+ game development live stream

2015 has gone by and here I am engaged in a head on, eyes locked, grade a+ premium organic non-gmo, gluten free royal battle with the remaining 363 days of this year! So I decided to celebrate it by opening up my twitch stream to the public after about 1.8 years of inactivity! What’s on the menu? Unity 3D, Mono Develop (and/or sublime), royalty free music and an attempt to design and develop a Tower Defense game with an Adaptive Path for mobile devices! Since the new office is still under development (get it? I’ll show myself out) I’ll have to do some creative work from home. Asked our lovely producer for permission to stream some development and he said ok (give him a follow, just in case I screw something up)!

Those that follow me on twitter know I opened up a reddit post some time ago asking about people’s expectation from a premium mobile game. Those that don’t, read that post and then come join, bitch and yell at me via twitch.tv’s wonderful chat system. If you are interested you can follow the original post here on /r/androidgaming! Point is this may-or-may-not be one of the games I plan on making using and following the guidelines extracted from the /r/AndroidGaming Q&A session! If you were active in that thread let me know! Rest of you guys? I accept back-seat deving :)!

DETAILS:

Stream Time: Hopefully ~24hs since this post goes up! Give or take depending when the new office is done! I’ll take quite allot of breaks, but I’ll do my best to be in front of you guys constantly!

Twitch Channel: Zapaman – clicky here

Twitter Feed: @zapakitul

2/2 * 2015: Beastopia, Indie Stuff and Dayjob

There’s a running gag between my twitter followers (and some co-workers/friends) that I’m a sellout for quitting the indie life ( read as “denouncing noodles and instant soup”) in favor of joining the Mobility-Games team in Iasi. But, let me ask you this: does it really count as selling out when you get to work on (this) something of your own choosing and design for  month? Sure, I was paid for it but last i checked the term “indie” meant doing what game you want while having complete control over it’s direction without a publisher pulling the strings behind the scene. The entire time spent on Bestopia was a throwback to 2012 when I was hard at work on MGL/Pimps vs Vampires, a throwback so hard my nose is still bleeding pixels left and right.

logoSo Beastopia, what the fudge is it?
To put it mildly, the brainchild of a designer, coder and a 2D artist. The initial concept was outlined in just two days over  series of debates using the Design Box methodology Talin proposed. A concept that was completely and utterly assassinated over the course of 1 month of development thanks to our “that would be awesome, lets keep it” and “did you document that? No? Think we said it should work like this….” approach. And the approach paid off in the end ( as it usually does!). When we started, the goal was to develop a Turn Based Strategy game with a Board Game influence. By the end of development we kept referring to Beastopia as an RPG… funny how this works :). I guess the initial dream most developers have was trying to creep up on us. I guess we could have called Beastopia a TBSDBGWLRPGI ( Turn Based Strategy Digital Board Game with Lite RPG influences) but that would have been silly; we went with “Beast powered board game RPG” which sounds more catchy.

gameplayNo really, what is Beastopia?
A short game with 3 game levels (boards) in which you assemble a party of 4 characters, fight beastly creatures, pickup and equip items and play card games to pass certain events. It also look like a billion dollars! As a bonus its free (as in beer), with no ads or in-app purchases and it works on any android capable toaster. So yeah, that’s Beastopia in a nut shelliowtu8fNucbN4afvSKK9GXCSIa8msKU5lsYUXE_Lk2NoD4jgMvespCGaHU0MH4tAi81z=h900

How did development go?
I can’t speak for the other two developers but from my perspective it went smooth and, mostly, on schedule. I’m extremely proud we manged to reach all our milestones and goals. And most of you know how hard that is, especially when you pitch 3 different people from different fields that never worked so closely together ( we work as part of a larger team on the company’s flagship title but that is a different shtick). You’d think finishing something on a tight schedule comes easy with so many game jams under my belt, but a 1 month project is really hard. We couldn’t just go with “hack it in – balls -to-the-wall approach” most jammers use. Due to the much larger than you average game jam time span we wanted to end up with a polished product; none of that half-arsed barely stitched together with space-tape lump of features game that 90% of appstore releases consist of.

A proud moment during development was going hands-on with unity and C# for a few days while Andrei, the programmer, was attending UNITE 2015 in Amsterdam. If you ever played MGL before and then tried Beastopia you probably noticed my trademark pathfinding behavior/implementation that relies on distance check to score tiles as opposed to the usual incrementing score approach. Someone should do a side-by-side video comparison on pathfinding from both games.

But in the end I’m extremely proud that I managed to generate some traction (marketing and articles) for the game, which now sits at around 3k downloads and 4+ score from ~200 reviews. I have to thank @Chris for being as lovely and approachable as always, and the guys from /r/android gaming for being so nice and genuinely interested in giving feedback. And of course all you twitter lovelies that keep putting up with all my shenanigans through all this years.

 

Closing words
You know, I’ve been at Mobility for a bit over one year now. Wasn’t sure I’ll make it this long, especially since f2p games aren’t my cup of tea, but it comes to show that if you take a long-haired bearded bastard, throw a bunch of lovable team mates at him and mix in industrial amount of coffee and projects like Beastopia he might just cut his hair and stick in there for the long-run, f2p or not. And all-in-all being indie means following the dream, even if that dream ends up with you working 9-to-6 in an office.

As for Beastopia, no amount of words can explain what it is and means for me. So go ahead and give it a try. It’s free and it wants feedback – heaven’s sake we welcome the opportunity of crashing our mail server with kbTons of feedback from you guys. And if you hate it feel free to call me a sellout on twitter, I’m starting to love it.

Cheers,
Zapa

P.s. Beastopia trailer

 

P.s.s I still s*#k at typing on a touch screen.

 

1/2 * 2015: Indie stuff, programming and my day job

Spoiler warning: I s#@k at typing on a virtual keyboard.

Its been almost half a year since the last blog post. How the hell i still have upwards of 100 daily visitors is beyond me (and the scope of this post). I’m currently on a train waiting for the last 2 hours of my 6h ride to end. So i guess it’s as good of a time as any to update my blog.

What have i been doing since GlobalGameJam?
Slacking off from my independent development work to put it mindly. Some of you know that i passed along Mutant Gangland to @Thomas and that i hanged up on MOAI and all my other projects. Part of the reason is that i needed to free up some time now that i spend most of it in an office (surounded by cool kats and bunnies). Working @Mobility-Games has been fun and i guess it is as close as I can get to the indie dream without having to rely on noodles to satiate my hunger. Steady pay (and physical colleagues) are a godsend, especially when some days we get to play with real world 3D pixels:

image

Been a fun ride till now and i can’t wait to see what’s waiting around the next corner. (Mobility) work stuff aside I’ve been a pretty bad designer over the past few months. I’m pretty sure i broke most gamedev rules by rolling my own engine (MOAI i love you but i want to learn more), porting the engine to the NintendoDS (not the new 3DS),  embedding Lua and using an archaic openGL version (glBegin/glEnd) + a half-arsed port of it on android. Why? So i can keep doing my own thing without having to commit to releasing and finishing a game, yet still improve a bit of my programming knowledge. Its been wonderful, yet a bit frustrating, working for the DS. Its the first time i ever spent hours knee deep in refference manuals, doing math to try and ballance memory consumption and learning to stay away from high res images with a high bpp (bit per pixel). Ogh and i wrote this little snippet that got half of my followers laughing their way to the unfollow button.

Now if only i could code my way into improving my team work and team related abilities. To this day i cannot hold my own  in a game mechanic debate relying on just words to describe the behavior. Sure, i can hack a pretty good protype to back me up but in most cases no one is willing to wait 3h so i can show them what my words fail to represent. This is an area in which i still have a lot todo.

There is one more thing i’d like to say before i end this non-technical, indie-less blog post: keep an eye out on my twitter feed, we’re about to release a TBS/Boardgame prototype mashup that I have worked on with some co-workers.

Love you all o/

Rogue Sweeper – a post Global Game Jam entry release

rogue_sweeper_logo2014 has been a busy year! I moved to a new town, got back in the industry at a local company (Mobility Games) and worked my ars off on getting a good multiplayer version for Mutant Gangland. Now that 2014 came to pass I was left with 365-ish more days to look forward to. Lucky for me  2015 started out in force, as Bucharest held it’s first ever Global Game Jam. And I was there to get a piece of it’s glory!

ggj_all

GGJ2015 took place between 23 and 25th of January. It was cozy, comfy and there was a lot of coffee to go around. After 30+ hours of work I finished a small game that tried to blend a Roguelike with Minesweeper. It got voted as a runner up by the people attending. Fast forward a bit and here we are today, with me releasing the post-jam version of that game, now titled “Rogue Sweeper”. Here’s what I said about the game on itch:

RogueSweeper is a mashup between a roguelike and a minesweeper game. Tap to reveal tiles, monsters, traps or items. Tap (or click) your way to the bottom of the infinite dungeon. How far can you go?


The game has a level scaling system that requires you to manage your XP. Will you buy that health potion and lose your current level or will you risk tapping on that monster?

Stats (Str and Evasion) scale with your level. Note that you can lose your current level by spending XP in the shop. Combat happens by tapping on an enemy. Destroying a monster will award you with food and maybe a free item!


Features:

  • 5 items that can heal, feed, reveal the map and enemies and increase your stats,
  • 8 enemies
  • In-Game shop that allows you to buy items with your XP
  • Generated dungeons with items, monsters and traps
  • No end in sight! Delve deeper and deeper
  • Available for Windows and Android

You can check it out here. It’s available for Linux, Windows and Android for only 1.30€ (equivalent of a beer in Romania).

Alpha 2 Technical Status Report #1

commanders

I know most of you want to see the latest juicy pixelicious art that Thomas has been doing for the game but guess what? This is a technical report (the first in a series of status reports) and none of that will be featured here! Instead let’s talk on where the game is at this point, what can you do with it and more importantly, what can it do for you? Let’s get right on that shall we:

Changelog:

Additions

  • Commanders-type units have been added in the game
  • Early keyboard-only support for playing the game
  • Improved modding support
  • Unit creation and editing has not been externalized from the code
  • New healthbars for the units to represent exactly how much life they have
  • Added scrollbars and tousch scrolling for some UI elements (buy menu, victory screen)

Removed content:

  • Unit abilities has been removed from the game

Fixes:

  • Random map scroll at the start of the match happens no more
  • Game starts in either fullscreen or window mode, based on the option ticked in the options menu
  • Icons and Effects now position themselves correctly when zoomed in
  • Player can no longer interact with the map/units/buildings during the AI’s turn
  • Exiting the game to the editor now brings back the latest map you were editing
  • OK/Cancel/Save now work in the editor
  • Going from scrolling to Colision+/- now works as intended
  • Fixed startup crash on Linux due to missing 64b binary

Now to go into detail about the changes and additions (I believe fixes are self explanatory).


 

commanding_unitsFirst thing I’ll be covering is the addition of commanders as playable units.

Up till this point commanders (or, as Thomas likes to call ’em, GangBosses) were used only as “profiles” for the player, affecting how much damage a unit will receive/inflict or how much income is generated each turn. From this point on commanders will take a much bigger role in the battle as actual playable units present on the battlefield. At any point in time during a battle a player will only be able to have only one commander present. A commander boosts the stat of his units (albeit less then in the previous version) and has access to abilities. Once killed the stat boosts will be removed. The list of abilities that a commander has access to has not be defined yet but I can give some examples such as:

  • Attacking twice during one turn
  • Doing Area of Effect damage
  • Healing friendly units
  • Capturing building/houses (like scouts)
  • Sacrificing a friendly unit for a damage boost
  • Sacrifice it’s own HP to boost movement / attack for friendly units in range

 

Unit creation and editing has not been externalized from the code.

In alpha 1 if anyone planned to add new units to the game or change their settings they would have had to dive in the code and make changes to: unit_type.lua, buy_menu.lua and leditor.lua. From this point on units are loaded from external CSV files: mutants.csv and robots.csv. they look something like this:

csv_imgIn the said file you can define their stats, their image, abilities, if they can capture buildings, how much they cost, their animation states, their graphics/icons for the buy menu and sound files. Adding a new unit into the game is as simple as adding another entry in the file (example: Joe, Allen, ZapaTard, Crystal, ISN). I believe that this opens up new possibilities for modders and/or people who plan on using the game’s source for their own TBS game (more on this on the end of the post).


Improved modding support.

In the game’s root directory there is a game called MODS. In there you can place your own folder (example: “Advance Wars”). If you copy the contents of the Game folder into your own folder you can start modding the game. Files present in yourModFolder take precedent over files in /Game (if your mod is enabled). What this means is that now you can change the game and distribute your changes without altering the main game. Now, by default when starting the game it will run the native version. To enable a mod you need to edit game.lua and add the mod name on line 3 for the variable Game.modInUse = “yourModNameHere”. If the varaible is set to nil then no mods will be ran. In the future I plan on releasing a launcher for the game which will allow you to select what mods you want to use (amongst settings and other useful options). For those interested in how this is handled code-wise things are pretty simple. All the lua files I want to use are added to a table called includeList. I loop over that table and check to see if any of those files are present in the current enabled mod. If they aren’t the game defaults to those in the /Game folder. Here’s the code:

for i,v in ipairs(includeList) do

    local prePath = “mods.”..Game.modInUse..”.”

    if isModuleAvailable(“”..prePath..””..v..””) == false then
        prePath = “Game.”
       require(“Game.”..v..””)
    else
        require(“”..prePath..””..v..””)    
    end

end


 

New healthbars for the units to represent exactly how much life they have.

In alpha 1 we’ve received complaints regarding the healtbars. Players found that they couldn’t really tell how much health a unit has and how much damage he will take in a battle. Our solution to this problem is this:

healthbars_unitsEach dot on the healthbar represents one point of health. No more dots = 0 health = unit is dead. No more calculations, no more approximations. When you select a unit you will be able to see how much damage it will inflict to units that can be attacked in his range. Can you unit destroy the enemy? The healthbar will reflect that and will display no more dots. Hope this solves some headache’s and makes things go smoothly.


Early keyboard-only support for playing the game

By keyboard support I mean playing the game without the aid of a mouse/touch screen. A cursor/pointer is used to interact with the objects/units and it can be moved using WASD/Arrow Keys. Pressing space selects the unit/building underneath it and/or confirms movements or attack. This can also allow for the addition of gamepad support in the future. Now I say early keyboard support because things are not so peachy. The main problem with it falls down on UI navigation. In order to setup the user interface I’m using MOAIGUI a library for lua and MOAI that handles the creation of windows and ui elements (textboxes, buttons, images, etc), a library that was designed with mouse/finger input in mind. What I’m doing in order to use it via keyboard is to access the ui elements position via code and move a “virtual mouse” over them, basically emulating mouse countrol on the ui. It’s barely functional at this point and currently requires me to setup each window independently. The code is a tad messy but I’m working on it. Hopefully it will be ready in time for the next alpha release.


 

That’s it with the most important changes added into the game. Next I’ll want to cover some other game-related subjects. First of all we’re aiming to release alpha 2 in June (aiming for early June but you know how things go… might even be July). Now the next alpha will feature new Maps (older ones will be available for download separately) and 4 playable commanders (as units) and early campaign support.

Next we’re working on setting up a development blog to keep you up to date. Due to personal issues on my side ( mother has cancer and I’ve been on the road a lot because of that) development has gone a tad slow and many have wondered what’s happening with the game. By setting up a dev blog both me and Thomas can offer more transparency on how development progresses. Expect status reports (such as this one), technical stuff (implementing the AI and other fun things ^_^) and, of course, lots of screenshots and ART assets from Thomas Noppers. With a bit of luck we could even get (here I mean strong-arm) Grace to showoff some cool sound stuff. Blog should go up sometime this week.

osi_licenseThird thing I’d like to cover is the source code for the game. Up till this point I licensed it as free for non-commercial use, meaning that you are free to use the code for personal projects as long as you get no revenue out of it. Well I’ve been thinking about this and would like to change things. As of the next commit on Github I’ll be changing the license to MIT. What this means is that you are free to fork the code, change it, distribute it for free and commercial purposes. Just don’t distribute the code with any of the assets from the game (sound files or graphical images). With the way recent changes to the game are going I’m getting close to having Mutant Gangland’s code work as a engine for TBS games. I’m pretty sure that a few months down the road game-orientated contents will be truly separated from the actual code and will be usable to create other different turn based strategy games.

The game’s source is available on github. I recently setup a new branch “development”. Hoping to push updates every week, starting now, into the “development branch” while master will contain stable releases. Currently both branches are a mess. The most stable version should be this one. I’m a git newbie and I overlooked some stuff, but things will get cleaned up. In the meanwhile feel free to fork the source and/or submit issues. I’d love to see my repro getting some activity.

And that’s it for now. Keep an eye out on our twitter (@Zapakitul, @Thomas Noppers, @Mutant Gangland) or this blog for information when the blog goes up. And if you would like to buy the game you can do so here. Plan on using the code for your openAdvanceWars project or TBS-GOTY-2014? Drop me a line, I would love to help out. Also remember there’s a subreddit for the game available. Or you know what? Drop us a love letter at info [at] mutantgangland [dot] com.