logo80lv
Articlesclick_arrow
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_login
Log in
0
Save
Copy Link
Share

Grashers: Building A Twin-Stick Shooter

Rafa Skoberg gave a little talk on the production of Grashers and discussed some of the challenges behind their twin-stick roguelike shooter.

Intro

Hi Daria! I’m a game developer from São Paulo, Brazil, and I love games, I love them so much that I decided to pursue the dream of creating games a long time ago. I started working with games in 2011, but mostly learning about them and working on small projects here and there.

In 2014 I created a studio called Pink Array to make our first game called Grashers, a crazy idea about collecting trash in outer space. Pink Array currently has 4 members: Brian Shepard is the artist, Caio Gaia is the game designer, Stephen D. Gibson is the soundtrack composer, and I handle the programming and production of the game.

As a team, Grashers is our first game, but Brian and Stephen have worked on other titles, such as “Fire With Fire Tower Attack and Defense“.

Contest

Thank you! BIG Festival is a very important event here in Brazil that connects game developers, companies, and players, and this year they teamed up with Nordic Game to have this awesome contest that aims to discover games all around the world. When I heard about this partnership I just couldn’t miss the opportunity, so I prepared the material, filled the form and crossed my fingers. A few weeks later I received an email saying we had been selected for the finals in Brazil. We celebrated a lot!

The competition itself was quite heated like Jacob Riis says, they like to grill the developers on stage with very difficult questions and a fancy scoring system. There were four judges on stage asking all sorts of questions and voting for the games they liked the most, and a very engaged audience cheering all the time and enjoying seeing the developers being grilled. I loved the experience, the format of the contest, it was very intense but also very enjoyable.

In the picture, from left to right:

  • Jacob Riis, Nordic Game’s host.
  • Rafa Skoberg (Pink Array, Grashers), contest winner.
  • Shirley Lin (DOGIgames), judge.
  • Flávia Gazi (IGN), judge.
  • Juno Cecil (Gixer Games, Toy Sports), contestant.
  • Justin Berenbaum (Xsolla), judge.
  • Jason della Rocca (Execution Labs), judge.
  • Filipe Pereira (Aoca Game Lab, Árida), contestant.

The idea

Before we came up with Grashers we used to play a lot of The Binding of Isaac, we also watched a lot of speed runs, tournaments, and we always appreciated the community around it. Eventually, we thought “Hey, it would be pretty cool if we made a game like that but in our own way”, and started working on the initial sketches. As big sci-fi fans, the space theme was always there with us, and the trash element is around us all the time in our homes, in our cities, even in our oceans. We saw a big game opportunity there since trash would give us a lot of freedom to work with, and at the same time raise awareness to a global issue.

Picture: Initial sketch of Grashers in 2014.

For the final round of the Nordic Game contest that we were supposed to sway the judges, we decided to show them the evolution of Grashers through the years, and we’re always amazed by how much the game evolved from our original concept.

Evolution from 2014 to 2019:

Magnetic field

It took us a long time to figure out this core mechanic (which goes pretty much against all game development rules) but we thought it would be cool if the player only had a vacuum device to interact with during the entire game, so all your actions are done by using it, and that’s from absorbing nearby trash objects to grabbing and flinging away monsters, and even shooting trash objects you collected. This vacuum device is so important to us that we even gave it a name: HADOS (Hybrid Absorption Device from Outer Space).

To create this magnetic field we used something called Flow Fields. We broke the game’s scene into small cells and assigned a vector value to each of them. When an entity wants to pull or push objects in the game, we alter this flow field’s cells with the force and direction of that entity. In case of the player pulling trash objects, we project a cone into this field directing entities towards the player.

Absorption Flow Field:

On top of that, we use a technology called “Entity Component System” which gives us a lot of power and flexibility to make the game work the way we want. It allows us to add any kind of behavior to any entity in the game at any time, so it’s pretty simple to turn a trash object into a monster, or a monster into a special item, or even allow the player to absorb floor and walls. It’s a real lifesaver, definitely the best technical decision we’ve ever made during the development of Grashers.

To combine these two functionalities, we ended up with a “FlowFieldComponent” which we can assign to any entity. These components can pull or push entities with any magnitude, and can also be either radial or cone-shaped. That gives us the possibility to create black holes that pull entities in, anti-gravity devices that expel everything nearby, fans that throw the player towards traps, monsters that activate the flow field component temporarily to pull the player and deal damage, and even bullets that have gravity. Shooting multiple gravity bullets is quite interesting haha.

Trash Absorption:

Post-production

We always look for ways to make the scene dirty and polluted, we tried many things from coloring the floor with darker tones to spreading small trash objects throughout the game (which worked), but we fell in love with this dispersed fog idea immediately and we couldn’t even imagine the game without it anymore. In fact, this is a feeling we use for a lot of things when trying out new ideas, the right ones fit like a glove as soon as you play with them.

How does that work from a technical perspective though? Basically we have another flow field just for the fog effect, but instead of holding vectors it holds a number from 0 to 1 representing the fog intensity in that cell. Certain entities emit fog, like trash heaps and monsters, and some actions reduce the fog in a certain spot, like absorbing trash and defeating monsters. Every time the game ticks we either add or reduce fog in a certain cell according to the entities in the room and their FogComponents (ECS really is a wonderful thing), and at the end of each tick, we blur this field so the fog spreads over time. After that, we create cloud particles based on these cell intensities and voila, let there be fog!

Fog Debugger:

Lighting is another tricky subject we spent a lot of time on, we tried multiple setups and each one had its pros and cons. Our current lighting setup results in a some sort of cyberpunk visual with extremely saturated colors in a way that respects the environment underneath it, we really like it. We use a library called Box2DLights to control them, with custom shaders to give the visuals we’re looking for.

Lights:

Challenges

We’ve had a lot of difficulties, from technical roadblocks to partnership issues, to the point we didn’t know if the project would be completed, thankfully it did. Since Grashers is our first game, every step in the development path was new to us and required a lot of experimentation, study, and naturally, a lot of mistakes were made.

The biggest difficulty we’ve been facing, technically speaking, especially in this final phase of the development, is our engine of choice (or rather, framework). Grashers is being developed in Java using a 2D game framework called LibGDX. The reason why it’s a problem is that it limits us in many ways, and we didn’t see that five years ago when we decided to use it. Our game attempts to manipulate the world as if it’s a 3D game, but the reality is there’s no real 3D at all, it’s all 2D. That includes visual depth, multiple entities overlapping each other, lighting, and the list goes on and on, but to make the game look more appealing we have to apply all sorts of hacks here and there. Every time we hit roadblocks like that we joke around saying we will write about them in our imaginary book called “Why you should always use a 3D engine for your 2D games”. It also prevents us from releasing the game on consoles, which is a major frustration.

On brighter news, we have a lot of plans for the future! From expansions to sequels within the Grashers universe, the story behind it is very rich and I have the impression this is just the beginning.

Grashers will be available on Steam for PC, macOS, and Linux, and we plan to launch it at the beginning of 2020. Our readers can know more about the game on the official website.

Rafa Skoberg, The Grashers Team

Interview conducted by Daria Loginova

Ready to grow your game’s revenue?
Talk to us

Comments

0

arrow
Leave Comment
Ready to grow your game’s revenue?
Talk to us

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more