Well, I was trying to keep this post unpublished for a couple of weeks more, but that doesn’t make sense anymore.
Seasons (working title) is a casual game I’m working on with some friends, and I want to talk about it a little bit.
Back in 2010, my colleague Gabriel Rodríguez was looking for a subject to develop in his videogame master thesis at University of Abertay Dundee, so I told him to do something real-time fluid simulation related, an area of my interest.
Long story short, he developed, with some of my help, a multiresolution 2D fluid solver based on Jos Stam‘s Stable Fluid technique (paper, slides and tutorial). The multiresoultion feature was something he worked on previously in his undergraduate thesis on medical visualization.
After Gabriel finished his thesis early this year we thought: hey, what about making a video game based on that. Well, that’s not exactly the story to be honest. The idea of making a fluid based video game goes back to 2009 when we started to work together in some project. I’ve been studying fluids simulation in real-time since then (but not formally by that time). So, the actual sentence should be: hey, what about finally making a video game based on that.
Two years ago we talked about making a Tetris mod based on fluids. Wetris we called it. That idea still bother us, but we changed our minds when we decided to make a title that can be distributable. Maybe in the near future we will develop that Tetris mod as a free game.
Mariana García (Gabriel’s wife) and Nadia Labeikovsky are also included in this project. Mariana and Gabriel are starting their career in video game making in London; Nadia works at EA in San Francisco while I continue with my graduate studies here in Caracas. All that means that this is a side project for all of us. A side project we want to finish and release.
The tech demo (in the first image) is the fluid solver with some floating squares on it influenced by the fluid. The simulation runs when the user adds velocity by clicking and moving the mouse cursor. For this application there is no need for a multiresolution feature. The demo is a straight to DirectX version of Stam’s solver.
For now, our game design approach is moving towards a proven style like Angry Birds and other similar games. We want to achieve a more dynamic gameplay, not one limited to fixed stages; but right now, the tech demo shows that fluids offer a degree of freedom that for this initial phase of design is actually a problem.
A physics-based puzzle to solve stage by stage is constrained, which is a good thing to start with. The intention is to design the game following certain rules given by Angry Birds:
- An initial stage state. In Angry Birds is represented by the pig’s structuture. In Seasons will be represented by several elements: flow direction and velocity, vortices, turbulence, density and so on. Obviously, we won’t start by mixing all the elements available (actually, Stam’s solver is limited in that regard).
- A way for the player to alter that state. The bird flock and the slingshot play that role in Angry Birds. In Seasons the player will have the ability to create a velocity source by moving the cursor (or manipulating the touchscreen). That source will have certain characteristic like been radial (outward or inward), adding turbulence and so on.
- A clear goal. In Angry Birds it’s to defeat the pigs. If you see the first image, those little squares are our idea of goal right now. When colored different, the player have to bring together those which share color, making a match, so to speak. It is a very simple goal right now, but we need something easy to understand to start working on. Using fluids, a bunch of goals can be set.
Even when we are starting this way, we have a very clear image of what we want as gameplay. We are just taking the what we think is the best way to achieve that.
By now, Gabriel is working in extending the capabilities of the tech demo, including some way to create stages. We can change the number, initial position and weight (which represents resistance to the fluid) of each individual square. We need to do the same with velocity sources, turbulence and fluid flow direction. Also, a tiny rigid-bodies solver has to be build (collisions, torque etc.) We, as researcher ourselves, want to develop those features instead of using an existing physics engine (like 2D Box). Anyway, we aren’t creating an actual physics engine, which make a lot easier the task.
The fluid shader developed by Valve for Left 4 Dead 2, and extended later for Portal 2 is a reference we are taking in account very closely.
Why Seasons as name?, that is an art-driven choice. Mariana will be our artist and she is working in a few sketches for the concept. Nadia is a game designer who we consult with from time to time.
In the next post about this game, I want to explain how to approach a fluid solver creation following Stam’s solution, and after that talk about the art concept we want to develop.