Blog

Snap Together

Snap Together is an Android app I made in Summer 2017. It’s for groups of people to be able to share photos easily. A user creates an album and others join the album. Each album has a start and end time, name, and a password. Anyone who joined the album will automatically have their any photos they take during between the start and end time added to the album. Everyone who joined the album will have easy access to everyone else’s photos.

This app is intended for when groups of people get together for a event, such as a wedding, party or trip. Everyone in the group can easily access everyone else’s photos. No more having to ask everyone to send their photos to you or monitor their Facebook page for new photos.

This is an Android app, so it’s written in Java and uses Gradle and Android Studio. It also uses Cloudinary, Retrofit, Glide and the Google login API for Anrdoid. Python, MongoDb, and Flask are used for the backend server. During development I hosted the backend on my Linode (Ubuntu server).

I haven’t published the app to Google Play. For now I have other projects that I am more interested in.

Glowbot Commander

Glowbot Commander is a game I created about 3 years ago. It’s a retro styled top-down shooter with some real time strategy elements. You can directly control your character (which is a robot) by using the standard WSAD keys to move around and the mouse to aim and shoot. You can also release the robot from direct control, where it will then fire at enemies on its own. It will also back up from enemies on its own. In this mode you can control the robot in a similar way you would control your units in a real-time strategy game. You can click on a place for the robot go go, have it patrol, tell it to attack a specific enemy, have it guard a specific ally, or hold its position. You can purchase additional robots to fight with you, or different guns and shields. Upgrades and robots can be sold for money, or swapped out for different upgrades. Your team of robots fights against endless waves of enemies. You can also make your own maps.

This is a Java game. I used the Eclipse IDE. The game framework I used was LibGDX. I did all my drawings in Inkscape. All my animations were done using Spriter. The spriter animations are easily integrated with LibGDX via the Gdx-Spriter library. The game is hosted on Itch.io. I created a job in my personal Jenkins build server that uses the Itch.io API to automatically package and deploy the game to Itch.io whenever I run the job.

The game has over a hundered unit tests and a few integration tests, which are run on every commit on my Jenkins server. I used a modified version of the entity-component-systemdesign pattern to easily manage the creation of the entities in the game. This design pattern allowed me to easily create entities where I could swap out different rendering, AI, and logic components to change the look and behavior of the entities without having to create separate entities for each different robot and enemy. In other words, all the entities use the same underlying logic but have different “components” that make them look different and behave differently.

The swarming and avoidance logic the game uses is based on chapter 6 in The Nature of Code.

You can download the game here. I haven’t been actively maintaining the game. If it generates any interest or if I feel like developing it further I’ll start maintaining it again, but for now I’ve moved onto other projects.