Friday, November 13, 2015

TampereGotchi on GitHub

It's about time! After almost a year past the project completion at the University of Tampere, the source code was left bitrotting in my (and my colleague's) hard drives. Since then I remembered countless times that I had to upload and blog about it and fix a couple things on it but never had the time. Hopefully it's not too late.

TampereGotchi is a finland-themed clone of the most popular franchise of virtual pets. Basic actions like feeding, cleaning, and playing game swith your pet are implemented. Also sending and receiving pets to a server and sharing it via a code. The game is not finished and likely never will be! But it is a great testbed for playing with Qt 5 and QML.

I am particularly proud of the polish that went into the main screen and some other tidbits, and the spaceship minigame. Also Joona and Ammar did a great job with the sprites. Thanks to our PMs and teachers at the University of Tampere that made this school project something special and very fun to work in!

The repository with the code and assets is available at Hopefully some will clone it and mess with it a bit.

An APK built for armv7 processors is available here.

Friday, October 9, 2015

Back to Brazil: LISHA and other tidbits

Exchange period is finally over. Truth be told, it has been over for almost two months! But it feels like only now I have got my bearings back again. It is not easy leaving Finland, what an awesome country!

Just as I was doing before leaving more than a year ago, I am back at work at LISHA, the Hardware and Software Integration Laboratory at Santa Catarina Federal University (UFSC), whilst working on graduating as a Mechatronics engineer. Under the supervision of Dr. Prof. Giovani Gracioli, my current filed of research are resource synchronization protocols for mutiprocessor real-time operating systems (RTOSs), or more specifically, EPOS.

Working at such high level research is very challenging work. Reading and reviewing articles that represent the top contributions in the field of RTOSs is mandatory for background research, and my current focus. Soon we shall be moving to algorithm modelling.

On a lighter note, I am also doing regular courses from the programme and my favorite so far has been Microcontrollers. We are exploring, one by one, every peripheral and interface of the Tiva C Series TM4C123GH6PM Microcontroller (using the LaunchPad development platform). It struck me how much functionality was crammed into that IC. The CCS development environment could deliver a better experience, especially on Linux, but thankfully one only needs a standard cross compiler gcc toolchain (arm-eabi-none) to develop for the board. TivaWare including all the necessary makefiles also helps a lot.

I plan to blog about the course's final project and any other stuff that ends up being done with the board. Also if there is any progress on dw Engine I shall post about it. A friend and me are in the process of sketching up an original level and ship a demo. Let's see what happens!

Saturday, June 20, 2015

Presenting neiatree

Mandatory Screenshot
neiatree is an asset tree processing tool for games of other multimedia applications. I made it after I counldn't find something similar that was simple to setup and use like I wanted, so why not scratch my own itch? By this naming convention following after neiasound I guess I'm starting a neiasomething library collection. neiaframeworks, perhaps? Hmm...  

So, about neiatree. It allows you to parse a directory tree into another, optionally processing the files into other files. Inspired by make, also keeps track of source file modification dates and updates only what has changed. So you can for example, compress textures and sounds for your game as a build step that runs automatically, before or after a build or a run. Want to use different compression settings for your tool? Not to worry, change the rules and clean your destination folder. If you did not change anything, the overhead in project build time is negligible. A tenth of a second or so.

It is easy to integrate it into your toolchain. The only build dependency is Qt 5.4. You can use an older version with simple tweaks.

Licensed under 2-clause BSD. Go check the GitHub repository!

Tuesday, June 16, 2015

Intel RealSense for Mobile Devices: Aftermath

Geting, Rauli, Me :)
It is hard to believe the project is over already, and I did not post anything about it apart from a passing mention when the KoneCranes App project was concluded. Perhaps it is because our great PM Cyndi took care of keeping a nice and steady blog about all of our activities, productive and social. Here it is.

I can't think of anything but praise for the team. We simply work great together, top to bottom, in a fashion I have only fleetingly experienced before. Even if the project turned out to be crap, at least we would have made some good friends. Alas, it turned out our project was in the top 4 shortlist, and we competed head-to-head for the win! Nope, we did not win. So close...

What we ended up with as deliverables was mainly documentation for ideas for future RealSense applications, and a proof of concept implementation of 3D camera usage for unique party experiences. Those are to be licensed to Intel, so meh, I can't post anything here ;)

If I had to distill a main project takeaway from a technical perspective, it would be that Intel is right on the money. The "future" mobile experiences will be defined by contextual computing, and quality of implementation matters. Specialized hardware with good software middleware is must for developers, given the sheer amount of heterogeneous solutions that need to come together to give a contextual computing architecture shape and protocols. This is a very exciting time for developers. Our camping knives are being sharpened for us, our tents will raise by themselves.

Let's explore! 

Monday, June 1, 2015

Projective Game Platform for Public Spaces

Hello everyone! :)

My second and final semester at the University of Tampere has just come to an end. I am very thankful for being invited to this great instituition. The ambiance and facilities are just as excellent as the staff and quality of teaching. This post is about my project for the Human-Technology Interaction Project course at the School of Information Sciences.

It is a proof-of-concept for a gaming platform that could be applied to public spaces, using multiple projection and the original Microsoft Kinect. Not terribly original, but functional, and quite fun! Check out footage from our user testing: (that means party at my room :D)

It depends on Qt 5.4, OpenAL (it embeds a version of neiasound), OpenNI2, and NiTE2. Code is available here, on GitHub.

Sunday, May 10, 2015


Today is a very important day for me. I am finally releasing to the wild my first open source library!

neiasound is an OpenAL wrapper for Qt-style applications, ready to be integrated into an engine's main loop. Doing positional audio is stupidly easy with it. It also includes  facilities for reading wav and ogg files, and optionally supports libsndfile, for reading flac and many more formats. It is also easy to implement your own audio stream decoder interface. There is support for streaming dynamic playlists with intros and seamless looping.

I have been developing and dogfooding this lib for quite a while now, and I am most happy to share it with the world! In fact, dw Engine is my third project to use it. It never stopped evolving. What is missing, but coming, is support for more straightforward usage of efx effects and extensions, and minor cleanups.

In Android projects, it is compatible with the standard OpenAL Soft port, and OpenAL-MOB. I recommend OpenAL-MOB for a better experience and reduced latency. If you disable HRTFs, I suspect performance is the same or better.

neiasound is made available under the 2-clause BSD License. Give it a try on your next project!

Thursday, April 30, 2015

Maker Faire UK

First time in Maker Faire!
Well, it has been a while. This semester has been quite busy and there is still a lot of stuff to be done. Also I got confirmation that I'll have an internship for the summer at Demola. So... More work for me. Fantastic, really!

However this weekend I managed to take a break from school and Finland to go accompany my friend Juha from to Maker Faire UK in Newcastle. A huge thanks to him for making this possible :D

Together, in the stand, we demonstrated his homebrew pick-and-place machine and software and I would like take a moment to say how awesome it is. Between sending a board layout to a factory to get only a couple of prototypes, and soldering hundreds of absurdly small SMD components ourselves, electronics designers never had many options concerning the production of more complex prototypes. This machine attends these use cases perfectly, as it is cheap, and built with a designer's workflow in mind. Don't hesitate to check the website, even if only to appreciate its ingenuity.

On another note, I got to win SODAQ's mini hackaton challenge and now I have a board of my own! So I look forward to playing with it and coming up with something cool. The code for my design, Bluetooth Low-Energy controllable Game of Life, can be found here.

As for general stuff, my other projects go on. I should have something to share after the semester ends. Cheers!

Thursday, February 19, 2015

dw Engine Update One

We have Fire Shield! Normal shield! Bridges! Running on water! Rain! Particle effects! Cool stuff! Basically, The engine is ready for it's inevitable one/two zone demo. The first video is a bit older, and sucks for being offscreen. Linux version. The other is more recent, from the android build. The capture is choppy though, so you'll have to take my word for it when I say the framerate is good.

So, the engine has evolved by leaps and bounds since the last hackish screenshot on the previous post. Player physics were ported to C++ but remained functionally the same, only some bug fixes were applied, particularly when rolling and pushing. Now we have a much-needed BVH, less boilerplate code in level object components, and small misc optimizations all around. The Android version runs at 60fps solid most of time (Moto X 2013) even with reflections and fancy stuff. It drops frames when there are lots of objects on screen though, particularly when rings scatter. If one prizes accurate Genesis emulation, that is a feature! (I'm kidding of course, more optimizations are needed)

The BVH is of the hierarchical circles type, implemented as two classes in native code and performs well enough, activating/deactivating graph leaves by emitting signals. Essential for decent performance on android. Zones can be of arbitrary size now, within floating-point precision limitations. I did not see the need for anything more complex such as AABBs.

There is a thread in Sonic United about the project. More timely updates are to be found there, for the interested parties. I shall work on releasing a demo (with an original zone) in my spare time, I just hope there is enough time to present it at SAGE 2015. Zomg spriting is hard! Not sure if there are two acts this year like last year, so, fingers crossed.

Smart Crane Monitoring App and Real Sense for Mobile Devices

One final presentation at Konecranes HQ in Hyvinkää, marked the end of the SCMA project with Konecranes. It was a pleasure to work with the company, and special thanks go to our awesome Demola facilitator, Ville Korpiluoto. Cheers!

The project results were licensed to the company and development will continue internally at Konecranes. It has taught me a little bit more about native mobile app development and respective interfaces. I am also proud of the graphical design of the app, which was drawn from scratch. In retrospect, the whole project was a very positive experience. See previous posts for more material.

The Spring semester here in Finland has brought another interesting project to work on, in partnership with Intel: Real Sense for Smart Devices. This one has a bigger team, and very interesting technology to play with. I would love to try and get some game up and running with it :D

Now, I'm off to relax a little here in Scotland to finish a week-long UK trip, with a great view of the Edinburgh castle. Student life ain't easy...

Monday, January 5, 2015

Smart Crane Monitoring App Update

This is another blog post reporting project progress. On the 18th of December we had a review meeting with KONECRANES. We revised the use cases and set the final goals for implementation. During the holidays it was a bit difficult to work, given the atmosphere and constant distractions. I'm glad I still got to enjoy Christmas and New Year's in Tampere. Ultimately, work got done finishing the UI.

Inspection Checklist UI

Our next meeting will be on January 7th. The project nears it's conclusion. In our agenda we will focus on results so far and on how the final presentations will be conducted.

That was it for this blog post. I will be back with the video of the final presentation, on the 15th. Later!