TL;DR I have contributed to Free Software projects by improving documentation and source code. Also, I'm developing free as in freedom games and game engines.
I love making games that I would play. I want to make so much stuff that I always feel like life is too short for all the things I want to get done. I've chosen Free Software because development is fast and scalable.
Documentation was my entry to the Free Software contributions. It doesn't require a lot of technical skill and it let me feel the vibes of freedom culture.
The Mana World
The Mana World is a 2D MMO RPG licensed as GPL. I started playing around with the code and I loved this project. I learned a lot from their documentation so I decided to give back a little. I implemented Markdown on the Github Readme, added some links, images and stuff. Nothing fancy. It was a little hard for me back then because I had no idea how to use Pull Requests. In the process I met a lot of interesting people on TMW IRC Chat and Forums who helped me a lot to deal with the mess I was making. Adapting to the project standards and learning new git stuff (such as PRs and stashing) was very challenging but it all worth because contributing to free software is way too cool.
Google Maps for Rails Gem
Gmaps for Rails is a gem to ease the implementation of Google Maps on Rails. I have used this gem on a couple of projects. When I was learning how to use it from the Readme documentation, I found a broken link so I fixed it. This was a very small contribution but it was a perfect opportunity to use what I learned on The Mana World. I made the PR and everything went smoothly. This gave me a lot of confidence and desire to keep contributing.
Aside from text documentation. I've made some video tutorials. They're qiuck (<5mins each) and straight forward (I just do stuff, not even talk). I frequently get asked the same tech question over and over again. So I made a rule for myself: If I get asked a tech question more than once, I'll make a video about it. I know this kind of video tutorial is not best suited of some audience, but it is for some like me.
Blender is a 3D modeling software I use to make animations, games and 3D prints.
Git is a version control system I use to manage my projects and work on collaborative teams.
Rails is a Web App Framework.
I've also made some tutorials about mobile gamedev and free software engines.
Source Code Contributions
This was my first code contribution to a free software project. ItchDroid is an Android client for Itch.io, a game distribution platform. I found this project on the PlayStore, found some bugs, repaired them and made a PR. I decided to contribute to Itch.io because I thought it was free software. I was wrong. It turned out that only the clients (desktop and android) were free but the server was not. I emailed Leafo, the creator, and he replied that the server doesn't even have a license :| Anyhow, my PR got accepted by gotosleep, the creator, who had months without activity on Github. At some point I thought he was dead (or maybe he was and I revived him).
Now here is the real deal. OpenRA is a 2D RTS Engine. I found about it on a facebook group and decided to try it out. The game has a great player and developer community. When I was playing it I found a couple of things I wanted to improve. The first one was that if the player frenzy click a character, the sound would overlap.
So I fixed it, made a PR and got accepted. It was very hard to adapt to the engine at first. But the community on IRC and the official documentation helped me a lot.
In the process, I found out about Bounty Source, a platform were anyone can post bounties for new features development. OpenRA was part of that and I decided to work on implementing waypoints for a $50 bounty. I managed to make it work but sadly it didn't met the code standards for the project. I kept going making cleaner code and implementing new core structures. It was crazy and deep stuff! So far I haven't been able to get my PR accepted and no one else has taken the bounty so far. It hurts!
The shibe world
The Shibe World is an MMO RPG where every player has a Dogecoin wallet. Dogecoin is cryptocurrency that is very easy and fun to use.
Basically what I did was to fork The Mana World and add Dogecoin functionality. It wasn't an easy at all. TMW code is harsh. But I was able to implement the following features:
- A Doge Faucet: Once a day, every player get 5Ð for free!
- A Doge ATM machine NPC: Deposit, withdraw and send Doges.
- The Arena: Pay 5Ð to enter the arena, the last man standing wins the pot.
I got a lot of help from the dogecoin and TMW community. The server was up for a couple of months, there were a lot of bugs and unfinished stuff. Despite that, some dogecoin users played the game and used the dogecoin functionality. But I forgot to pay the server and everything got wiped out because I didn't have a backup. Even the dogecoins were lost forever :ouch:
The code is still on Github, one day I want to it to go online again.
Tech: js, linux, gnome
Gnome is a desktop interface for Linux. It was my main desktop interface a couple of years ago. In Gnome 3, a new feature was introduced, the extensions. Everyone can make extensions, such as clocks, widgets, shortcuts etc... and upload them to the extensions site so everyone can download them.
I made one myself. It was a dogecoin button that each time you click it, it pops up a doge message. I had a lot of fun doing it. When I finished it, I uploaded it to the extension site, they made me a code review and after some changes, it was now part of the official list of extensions. It was a great experience because it was my first time contributing code to a free software project.
Projects I'm leading
Github Repo: https://github.com/Rosalila/RosalilaEngine
Rosalila Engine it's a simplified, adaptable and free as in freedom game engine written in C++.
At the beginning I didn't plan on making a game engine. I started doing a Fighting Game. But the project grew too big so I decided on making a Fighting Game Engine. But it also grew too big so I decided on making an engine.
Rosalila Shooter Engine
Github Repo: https://github.com/Rosalila/STG
Rosalila Shooter Engine let's anyone easily create shoot'em up games (STG, bullet hell). It was made on top of the Rosalila Engine.
Before working on this engine I was making a Fighting Game Engine. But making a Fighting Game requires a lot of work. So I made a Shooter Engine first because it is a less ambitious project. Making this engine has given me a clearer view about game development. With all this new skills and stuff that I have learned I'm going to be able to tackle bigger projects, such as a new version of the Fighting Game engine.
Github Repo: https://github.com/Rosalila/Flatshot
Flatshot is the first project that is going to be released powered by the Rosalila Shooter Engine. It was Greenlit on Steam on 2016. An now we're fine tuning the last details before launch.
Aside all the crazy coding stuff I've learned on this project, I've also learned a lot about Game Design, Graphics, Sound Effects and Music. I've also learned about finishing stuffs. Finishing a game hasn't been easy at all for me. Every time you add a new feature, the project grows exponentially, and deciding which feature stays and which is not going to be released hurts a lot. But overall, all the satisfaction surpasses by far all the effort and hard time making all of this because Flatshot is a game that I would love to play and I had a lot of fun doing it.