Thursday 9 February 2012

Try out Fathom

I said yesterday that I would offer a very early build of Fathom for you to play around with and check out, and true to my word, here it is. It should be noted that you will need to install the XNA 4.0 Redistributable in order for the game to function. 

A few quick notes regarding the controls:

W, A, S, D - Movement (although W & S don't do anything yet..)
Spacebar - Jump
Left Click - Remove blocks at cursor
Right Click - Add blocks at cursor

There is also a developer mode that allows you to fly around the game world a little more quickly in order to find things:

Delete - Enable / Disable Dev Mode
Arrow Keys - Move character around

There are still a few issues that need to be resolved:

The collision detection system needs a major overhaul, as it is currently a little bit glitchy. If you get stuck, the best bet is to hit the spacebar a few times, it seems to fix the majority of issues.

Clouds seem to be occasionally spawning below the terrain, I thought I had fixed this, but I think the generation script needs to be overhauled.

Everything you see in the game currently is placeholder artwork. 

The game may crash if the camera moves outside of the world bounds, although this hasn't been thoroughly tested yet.

Now that you've made it through my blathering, grab the game and check it out!


Wednesday 8 February 2012

Terrain, Weather, and more!

So today was a rather unproductive day in the ongoing development of Fathom. I am still trying to figure out the best way to present information in a logical manner, so bear with me here.

The Camera & MousePosition
I utilize a freely available 2D camera class for Fathom. I am still very early in my development, and haven't had the need to add any advanced features, so why reinvent the wheel? One major issue with this camera system lies in it's translation matrix:

Matrix get_transformation()
{
  _transform =
     Matrix.CreateTranslation(new Vector3(-_pos.X, -_pos.Y, 0)) *
     Matrix.CreateRotationZ(Rotation) *
     Matrix.CreateScale(new Vector3(Zoom, Zoom, 1)) *
     Matrix.CreateTranslation(new Vector3(_graphics.Viewport.Width * 0.5f,
          _graphics.Viewport.Height * 0.5f, 0));
    return _transform;
}

As you can see, the last translation in the matrix is shifting the camera to center it in the game window. This will instantaneously your mouse position by half of the width and height of the viewport. To overcome this, and convert the mouse co-ordinates on screen to world coordinates, I used the following function:


public Vector2 MousePOS(Vector2 mp)
{          
    return (mp + new Vector2(this._pos.X - _graphics.Viewport.Width / 2,
               this._pos.Y - _graphics.Viewport.Height / 2));
}

This quick function will ensure that the mouse position is always accurate to the world coordinates and prevent skewing of the relative values.

Weather & Clouds
This feature is very, very rudimentary. Basically, I am generating a list of clouds that move across the game world. They culled when off the screen to avoid additional, unnecessary system resources usage. Eventually, it will support a variety of weather conditions and constantly change. I am still a ways off from that.

Terrain Manipulation
I finally got around to adding two functions to the terrain engine. These allow blocks to be removed and placed at any world coordinate. Obviously, this is nothing new, but it is new to Fathom so I will count it as a feature - for now. I am unsure of whether or not this will become a gameplay mechanic or not. I am not going for a MineCraft or Terraria knockoff here.

Trees
Finally, I added a (very) basic tree generation function. It is nothing worth spending a lot of time on at this point. Eventually I will flesh this out a little more.

Tomorrow I will post an alpha build for you to download and play with.

Tuesday 7 February 2012

Fathom: The Beginning

Without going into great detail about the ins and outs of the game (mostly because I haven't determined them yet), I am going to cover off on some very general concepts that I am working towards.

Firstly, Fathom is a 2-D side scrolling sandbox game with a twist. Spaceflight. Beginning on an Earth-like planet, your character will be charged with executing missions for a large space-mining firm. While this realistically will be a glorified tutorial, it will give the player the necessary currency (Basic Economy) to buy their first space ship and take off to strange new worlds - although chances are, it will be a rust bucket and won't get the player very far... Besides, what fun would a game be if there weren't some kind of logical, materialistic progression?

All of the planets, solar systems, asteroid belts, comets, and other celestial entities will be procedural when possible. This means that they will be different every time you play the game! While that isn't necessarily overly exciting for a single player campaign, I am hoping that it will add some variety to the multiplayer side of things.

Additionally, the terrain is (at this point) completely destructible! At some point I would like to toy with the idea of planetary raids,but that is in the distant future.

I could go on and on with details about my plans, but how about I just throw up an introductory screenshot and call it a night? Expect more tomorrow.


Welcome

So I've had a little bit of interest expressed in what I am working on, so I started this devblog to help shed some light on my project, working title: Fathom, and the process I've been following to develop it.