VNC VR – a volatile solution or a virtually amazing revolution?

Let’s get this straight: If it’s unconventional, weird, untested and surely not enterprise ready in the near future then I am interested in it! A while ago I used an Android tablet as my main work platform and even though it worked, the negatives outwitted the positive. I know it’s doable, I’ve done it and I can see myself doing it again in certain circumstances. But since I truly am on the path towards becoming a internet enabled masochist I decided to go one step further and take my brain and eyes for a more unconventional spin: Attempt to do some remote work using Virtual Reality!

cardboard_hereNow I know how this sounds but bear with me! At heart, the concept of virtual workspaces sounds like a great solution to allot of on-the-go work, office space and expensive 30” inch monitors that people like me love to stack! Let’s be honest, even a huge laptop cannot be a true replacement for that sweet multiple display-based work station you grind away at work/home! We love our multiple monitors and there’s no shame in it. And this is were I think VR truly has the chance to shine! Where ever you go, where ever you sit, as long as you have a VR Head Mounted Display and a device that can connect to the internet you can, technically speaking, have 20 monitors surround you and work in any environments with no visual distractions! The downside? There’s no way to test this theory for now, at least no with more than 1 monitor but hey, I’ll work with what I have.

vr_cameraThe tools of the trade?

  • Android Smartphone
  • A google cardboard case
  • A ubuntu server (I’m using a @digitalocean droplet for this one)
  • A VR-enabled VNC app

or

  • Any VNC app with Native SideBySide for Android.
  • A Logitech K480 bluetooth keyboard
  • A Microsoft Designer Mouse

The smarthphone I’m using is Nexus 4 with Android 5.0.1 and an Asus Zenfon Go with 5.1.1. The N4 is the main display since it’s the only one of the two phones with a 1080 resolution. I could go about with Zenfon and it’s 1 extra inch but the fact that it lacks a gyroscope leaves the experience lacking. My home router (a TP-Link WR740N) seems to hate VNC so much that it crashes every time I setup a connection to a server on the same network so I had to go for a remote solution to test things out. As such I relied on good-ol’-same-ol’ digital ocean for this experiment. Now for the actual remote app, we can use two different approaches: Continue reading

Advertisements

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!

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.

 

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).

One month tablet challenge – first few days

Prologue

I moved to Iasi city a bit over two months ago and ever since I got here I saw how different the life style is from Bucharest. Iasi is situated between mountains and hills, with green lush forests and vegetation all around, lots of open space and alot of people biking all over the place. Since I arrived I wanted to take my laptop and explore the city, writing code one coffee shop at a time, but my first experienced ended with me skipping 3-4 shops that didn’t have a plug I could use.

A few months ago I stumbled upon  Henri Beirgius’s blog and noticed an interesting article about doing development on an Android Tablet which peaked my interest. The thought of being able to work from anywhere without a wall-plug nearby coupled with great portability and hardware cost is hard to ignore. Knowing that my old laptop is ready to give up at any moment I had to take a decision and so I ended up ordering a 9.75” Android Tablet and a bluetooth keyboard. And so begins my one month tablet only challenge / experiment.

As for why I would love for this experiment to work out, well here are my primary reasons:

  • to replace my old dying laptop with a more portable solution with a heftier battery life
  • to eliminate downtime’s during my work process (instant-on, full screen windows, no more 5m+ of building the android version every time I want to test on a device)
  • to establish heavier limits than usual on my design and development process in order to be able to create/design something different then my usual projects
    • as a side point, being confined within the limits of an android tablet (in terms of power, screen space, input, performance) should “train” me to optimize my code and design a more touch friendly experience

First 4 days

One of the first things I did once the keyboard arrived was to take a seat on Mobility Game’s comfy couch and access “the cloud”. I’ve already setup my home FTP and SSH server and all that was left was to create a script that would build my project and move it somewhere that I could download it from. About half an hour later I detached my tmux session, closed the lid on the tablet and left to grab something to eat in a diner not far from the office. I was anxious to get there as fast as I could so I could check on the build progress. Being able to close the tablet and not loose any progress that was happening in the background was something new for me. Sure enough once I took a seat at the table and ssh into my server I noticed a tablet_moai.apk file waiting patiently in the /home/zapa/builds folder. I started Quoda and wrote my first “hello world” on the tablet to see if my app was working properly and gleamed with excitement once it did.

The following two days were spent trying to adapt to vim and learning the key shortcuts. The biggest challenges I faced were due to the way Android handles the ESCape key (it minimizes the app that’s currently on screen) and battling with the SHIFT key position on my keyboard (kept pressing it instead of the A key). I’m also using custom vim settings that came with TerminalIDE, something that rendered most of the tutorials obsolete. I ended up using vim for a little while but decided to return to Quoda as a local IDE, while relying on Nano (with some custom .nanorc edits to enable syntax highlighting) for server-side editing (mostly java).

Yesterday however was the first time I did any real development and work on the tablet, after I left the office (’round 6:45 PM). I stopped at a local pub to grab a few beers and prepare a powerpoint presentation for DesignJam. After scribbling down a few ideas and points in writely I opened up Quoda and patched a few bugs in Mutant Gangland’s editor and then pushed the fixes to my ftp server (git integration isn’t complete on my side). I’m still amazed that I can actually get real work done on this thing with little sacrifice. My biggest problem right now is debugging since I do not have access to a console alongside my app. The way I debug at this point is via VNC to check error messages in the console or via a .txt file dump from within the app. It’s not a streamlined experience and so far it’s been the biggest hinder for my productivity. I’m planning to tackle this problem by either adding in my own “console” overlay in which I catch and print errors or b) by rooting my tablet and finding a way to execute apps via “terminal”, though the second part is still something I have yet to research. It’s a bumpy ride overall but with lots of sweets spots, great views and good “fuel consumption”.

Before I left I did one final push to the FTP and set my machine to build. I detached Tmux, packed my tablet and took a long walk home through Iasi alongside a co-worker who gladly payed for the drinks we had. Once home I launched the new build to see if it works and then I hit the sack, letting the tablet charge. I think we both needed the rest :).

The Setup

rapoo

  • A vonino Spirit QS Android Tablet
    • OS: 4.2.1
    • 2 GB Ram
    • 16gb Storage
    • Quad Core
    • 1024 x 768 resolution
  • A Rapoo Ultraslim E6300 Black Keyboard
    • Bluetooth
    • 10m connection distance
    • 1 month of battery power with only a 2h charge
    • 20 cm x 1.27 cm x 8.128 cm ( 8.1 x 0.5 x 3.2 inches for you lovely people on the other side of the ocean)
  • A 5GB monthly (grandfather) data plan from Orange
  • A HAMA tablet cover and stand 108278

Total cost? 246 euros + 25 monthly


 

The Software

  • Local development (on the tablet)
  • Cloud development (on my home server)
    • TerminalIDE: for ssh access to my home computer
      • ssh
      • tmux
      • vim
    • FTP Cafe: to upload/download new builds from my server

Total cost? 10 euros


 

The Process

From what I saw on Bergie’s post he mostly works in the cloud with little offline work, especially since he’s (from my understanding) mostly doing web development. Going for Game Dev complicates things a bit. I could have gone the C/C++ route with the amazing C4Droid (plus it’s SDL bindings) but compilation times would have nullified the experience I’m trying to achieve. So I went back in my comfort zone and built an android app using my Chaurus Framework. The app itself is nothing but a main file that searches for a folder on the /sdcard and includes “game.lua”. From there on it’s free (game), with not many things changing in my workflow. Building and debugging for Android is an entire different beast to tackle. If I want to make changes to my “main app” I have to ssh over to my server, vim my way through the project’s source, build and then download the app via FTP. Luckily wifi is abundant in my country (and all through-out Europe) and, just in case, I can fall back to my 4G data plan.

Total cost? Building MOAI for Android + 0.01c monthly


 

 

[Post Mortem]: Copulus – the love making, weight lifting god game

copulus_logo

Copulus is a 2D God Game in which you have to help your subjects populate their little world. In order to achieve this you need to balance their need for social interaction (and copulation) with the need to survive. I decided to try and stream line the “god game” mechanics and let the player focus on only a few tasks, as opposed to regular god games where you have to manage many different needs (housing, hunger, peril, happiness, loyalty, security, etc). In order for your population to survive and expand you only need to make sure they are feed, safe and can interact with each other. I even took this approach a bit further and merged survival/peril with hunger satisfaction. Before I go into the, regular, What went Right, What went Wrong topic I would like to present my approach for this entry:

Limitations breed creativity

Before the theme was announced I already established how far I can stretch things. I know from previous experiences how hard it is to stay on track of the initial design and how many features end up being thrown away in order to finish “something” before the time runs out. So for this edition of Ludumdare, I’d like to say I came prepared. Here are my, self-imposed, limitations:

  • 256×384 resolution (upscaled to 512×768)
  • must involve some kind of an AI
  • must be tile based.

Three rules in total. Three rules that, once the theme was announced, helped me establish a clear goal. For example, the small resolution and tile-based approach helped me establish the art style, level and user interface design. Working on a 256×384 screen I could only fit 8 / 12 tiles (32×32) on the screen, or 16/24 tiles at 16×16 pixels each. The AI requirement weighted in favor of the strategy genre and, it’s subclass, the god game genre.

From here on, I went with the entire map being confined to a single screen (in order to have a good view of your population, and not have to hunt for them everywhere). This also affected my User Interface Design and Experience, since It had to take as little screen space as possible. Little screen space for UI implied having only a handful of buttons during game play which, combined with the god-game thematic, had me limit what tasks the player could focus on. A small amount of tasks for the player to perform required me to streamline the entire “god game” approach and make it as minimalistic as possible (the soul experience as I like to refer to it). You can see how things developed further on.

training_gif

What went right

  • Using a WIKI to plan ahead. Features, classes, how the AI should perform, etc [click here for a screenshot of the wiki].
  • Not stretching further than I can and imposing strict limits.
  • Making fake-screenshots(mockups) before beginning development so I can plan my interaction approach.
  • Using tools and frameworks that I was familiar with.
  • Selecting a limited color palette to work with.
  • The UI only interaction means that I can also port the game to tablets.
  • Using “procedural” generation to save time (from level design) and focus on other areas.
  • Nailed the risk-reward motif due to Wolves acting as a source of food but also damage to the units.

What went wrong

  • My innate lack of knowledge when it comes to composing and/or generating appropriate sound effects.
  • Having to remove the “convergence” scene. After winning a level, the player was supposed to reach a new world with his highest level followers and watch them fight off the inhabitants. I regret removing because it would have had a better tie in with this jam’s theme. Further more, I had a system which allowed the player to revisit worlds that have been previously populated, to see how they are doing.
  • The game’s balance is a bit off. Level progression of your followers vs level progression of the wolves is tipped in favor of your followers for the first few levels. A few wolf summons in and you can only take them on if you have a high level character that survived.
  • Social interactions are only represented by heart animations on individuals, but it’s hard to tell who “copulated” with whom. More so, a death of a birth of an individual is represented by their respective sprite disappearing from the game.
  • Health, hunger and level indicators are way to small and crammed into a unit’s sprite.
  • The tutorial is just a image and does not convey all the information needed.

blood_gore

Conclusion

I feel that with each Ludumdare event I partake in I can quantify my progress as a Designer. My first entry required the player to quit the game in order to restart the level and featured only mechanics but no clear goal (also no Ui of any kind). In my last LD (7DRTS) attempt I finally had a entry with no missing UI options and a clear navigation path. You can see where I’m going with this. But all in all, I’m glad that with each submission I end up acquiring new knowledge. As far as limitations go I believe that it’s better to know what you should not do as opposed to not knowing what to do. Hopefully my next LD submission will blow this one out of the water.

You can play and rate the game here. Linux, Mac and, hopefully, Android coming tonight. I’ve also uploaded it to itch.io and, in the weekend, will release a post-compo version that has sound and the features that were cut off.