LRG wishes everyone a very happy new year 2010 with more development goodness coming in the year ahead !!!
Posted by Prometheus
Just released Aftershock's own official page:

http://aftershock.liquidrockgames.com/

Will be updating it with more content to come in the future.
Posted by Prometheus
Just won the Most Promising Start-up Games Studio at MSC Malaysia Kre8tif! Digital Content Conference. A million thanks to the judges and the organizers for this award. We PROMISE to continue to innovate and continue push tech for our future games as much as possible.

Posted by Prometheus
Posted by Prometheus
Broken lamp post prop.

Posted by Prometheus
Track node editor has finally been completed with ability to define checkpoints for race route. I did a real world test with our first level and successfully defined the whole track without any issues. :D Yay! It's a bit cumbersome to use though since we don't have a proper UI. Our level editor as of now truly requires a pro. lol.

Anyways, for some eye candy shot to please our fans, here it is :D
Posted by Lf3T-Hn4D
Just changed our direct facebook URL to: http://www.facebook.com/LiquidRockGames
Posted by Prometheus
The name speaks for itself.

includes: parallax mapping+animated glowy parts.

Posted by Prometheus
of the ship interior this time with a work in progress racing track:









Posted by Prometheus
While waiting for my code to compile, I started thinking how we want to do re-spawn effect. Blinking the player craft directly into the track is downright ugly. Hence, I thought having some teleporting effect would be cool.

Here's what I got after a few minutes of hacking into our already crazily mega shader.


Imagine that + some particle effects. :D However, it'll still take a while before I actually get this into the game. I need to work on an effects system to easily apply custom effects to the scene.
Posted by Lf3T-Hn4D
Over the week I've been working on a very important feature; Track system. The need for this system was due to requirements of a racing game. In a racing title, we need to know if our player craft is inside or outside of the track. We also need to know how to respawn back into the track. Last but not least, we need to have a way to know if a player has finished a lap.

Thus the track system come into place. With a way to define tracks, all of these will be possible. What's even cooler is the ability to give a good estimate of how long a track level is. :)

However, the problem lies in defining the track. Because it's impossible to do it outside by text file, we need an editor to lay our tracks. This turned out to be quite a pain in the ass to implement. In fact it's more complex than prefab placement since we need to link tracks together to form a track chain.

Anyways, I've finally got a usable editor tool in our world editor.

Here's a screen shot of this WIP track edit mode:

Ignore the lighting. The main point is the track. Obviously lighting is just default crap since I created a new level just to test this in a quick manner.

P.S. For those who are wondering, I'm using cubic bezier curves for each path segment. Thanks to my bro, we've got quite an advanced bezier curve functions like getting arc length, finding closest point on path and splitting a set of points evenly along the path. Trust me it's no easy feat. Requires lots of integration maths and Newtonian Interpolation. That plus our rusty math, this took us almost two days to figure out. :P
Posted by Lf3T-Hn4D
Catch us at our official Liquid Rock Games Twitter site! Live updates ! Rants and raves !

http://twitter.com/LiquidRockGames
Posted by Prometheus
Must watch for indies looking to go the digital distribution route.

Digital Distribution Summit - Sandra Sdraulig Opening & David Edery Keynote from Digital Distribution Summit on Vimeo.

Posted by Prometheus
Finally about time. Read the article here.
Posted by Prometheus
Here's an update on how the ship interior looks like within the level editor plus detail maps with some test lights. no ambient occlusion map yet though as the model is not fully completed yet. Lighting will be further tweaked when the entire track is set up and finalized.

update: 10/10/09 Tweaked the lighting abit for more contrast in the scene to make the middle part of the track stand out more plus added colored specularity maps.

Posted by Prometheus
Here's a rough lighting idea for this part of the track to convey the feeling of a dark and dank environment. Image rendered in Blender3D. Will be destroying parts of the interior later on.





















mini update (6/10/2009):

Started destroying parts of the ship's interior. Will be working on the racing track soon.

Posted by Prometheus
Here's a Blender3D render on a partially textured ship interior. Will be adding additional detail using detail maps once in game to enhance the details.

Posted by Prometheus
[begin rant]
Man, this sucks. Just as I was getting into more fun, VC hits the brick with our core framework static lib hitting the roof for file size. It's now at 600++mb O_O. Really sad... I couldn't link the editor with it anymore.

Guess I have to turn it into a standalone dll. Hope this will solve the issue. Woo hoo.. more dlls! Sheesh...
[end rant]

About what I'm working on, I'm building a track system to define what's an inside of a track and what's out. This system will be able to help detect when a craft falls out of the track and be re-spawned properly back in the track. It also will serve as checkpoint system. Two birds with one stone. v^_^v
Posted by Lf3T-Hn4D
more shots of the low poly ship interior track before I start working on the high poly version.







Posted by Prometheus
Started modelling on a racing track through a massive sunken ship interior where players get to navigate through the ship's massive malfunctioned engines.

Posted by Prometheus
Posted by Prometheus
I've finally fixed the problem with my float compression. Just to note, the compression technique is following the IEEE standard somewhat. I forgot to deal with normalized values (-127 exponent) which made the compressor generate garbage.

If anybody is interested on how I compress, just have a look at how halffloat(16bit float) is stored. I'm pretty much using similar technique. Basically discarding some precision on the fractions and shifting exponent bias for more floating point precision at smaller values. (Note that I'm making it very specialized for delta type compression; meaning the closer the value is to zero, the more precise, the bigger the value, less precise.)

Aside from this, I found out that the compression worked really well even for important objects like player controlled entities and camera. Thanks to Glenn's article describing exponential smoothing, as long as I don't snap when compared values are very close, things worked very smoothly.

I'm very happy with the result thus far :) Next up is actual multiplayer race! Woo hoo!
Posted by Lf3T-Hn4D
After countless hours of sleepless nights, I finally got it going! Smoothed network physics simulation will little noticeable jerks. Yay! However, this is only for the LAN. I'm not sure how it will fare with the internet where latency isn't our best friend.

It took me a while to figure out that I had to synchronize the physics time frame and not the system time frame. Top that off with bad timing for the network syncing right after physics simulation was done, I was having a lot of headache beating around the bush for naught! Sheesh...

Aside from this, I'm having issues with float compression. Somehow it's giving weird values that leaps all over. Probably something wrong with the way I compress and decompress. While on this, I wonder if I should have some way to mark significant objects for non compression mode? How does other games normally does it anyways? Do they like make important objects like controlling player to always sent in non compressed mode while other non controlling objects get compressed mode?
Posted by Lf3T-Hn4D


Posted by Prometheus
Started working on some sunken ships which players can view along the tracks.



Posted by Prometheus
Finally something worth blogging. I've got the game networking with input syncing working like a charm. Yahoo! Looks like my action system is doing a fine job. :)

Right now I've all client players sit as observers on the server's craft. While the server is controlling, the clients get the input as well. However, since I've yet to do any entity syncing, the craft on the client screens start to steer off into parallel dimensions. lol.

Either way, it's nice to see that my hard sweat Action system is working like a charm. Very excited now. :P Entity syncing here I come!

P.S. Sorry, no pics for networking. I can't think of any creative way to represent them with pics anyways.
Posted by Lf3T-Hn4D
I got this link from my sensei classifying our company business model as the Ramen Profitable. Rather funny name. So now we're noodle shop guys. lol
http://paulgraham.com/ramenprofitable.html

On the side note, I've just managed to get two PC linked together and entering the game. No game syncing yet. That's to be done after this. :)

While getting this done, I implemented a system I called delayed sync messaging. This system basically utilizes the time sync method I mentioned here. The concept behind this system is so that one can accurately synchronize a particular event that needs accurate triggering. For example, the beginning of the race, count down should be as synchronized as possible so client don't get a laggy start.

When dealing with this type of events, the only caveat is that the server side also have to synchronize with the client side. This means that the event has to be delayed as much as possible as such that all clients will get the request before it is triggered.

In a LAN environment, this usually isn't much of a problem because the ping rate is rather high; less than 1ms to 10ms. However, in the Internet scale, latency can go as high as 500ms to 1500ms or more. In that situation, time syncing becomes a necessity to accurately identify the server time.

I haven't really tested the time syncing algo I've implemented in the Internet environment yet. However, in theory, it shouldn't go wrong.. I hope... :-P

Sneak Peak:

Don't mind the UI. It's just programmer art to keep me going. ;-)
Posted by Lf3T-Hn4D
Ah.. time sure flies. Just to update, I had been busy putting a working network prototype together.

While doing so, I've also did some research on scripting to ease up game logic coding later. I was thinking of using V8 at the beginning. However after digging it through, I realised that it was designed to only run on a single thread (Google Chrome is designed as a multiprocess app instead of multithreaded app). So in the end, I'm back to square one of using Angel Script. It looked like it has evolved since my last use for it when I was still in my previous game company.

P.S. I did look at spidermonkey too. But getting from their source tree is a little troublesome with my ever so crappy always disconnect ISP. So I dropped it. Mercurial really sucks without the auto resume feature.
Posted by Lf3T-Hn4D
Here's a multi phong material test for a submerged building overrun with coral and other sea plant life.















Close up on the building surface. Includes parallax and ambient occlusion map.
















More buildings...

Posted by Prometheus
Just completed some seabed props(dead coral collection) mainly to be used to add extra details to the seabed track. Also to be used as track obstacles.

Posted by Prometheus
Another test for corals+parallax+ambient occlusion mapping. Will be adding paging geo coral meshes for added details later.

Posted by Prometheus
Parallax mapping test on a sample dead coral mesh.

Posted by Prometheus
Just thought I'd post some test screenies with a simple seabed mesh. Will be adding more details like rocks, debris to it later.




Posted by Prometheus
Heres an update on the completed low poly model with textures in the level editor.
























closeup pic:

Posted by Prometheus
Just completed the hi poly version of this track structure which is basically a huge shield barrier which prevents sea water from flooding the tracks.

Posted by Prometheus
Just completed some support structure for the track. Players would be able to race through them as they race on the seabed.

Posted by Prometheus
Interaction system. It's funny how the simplest and most important piece of a game engine could be so difficult to design. If there's no interaction, then there's no game at all. Hence, a game engine MUST have a unified way to deal with interaction.

When talking about interaction, input controls come to mind. Keyboard, mouse, gamepad or even those driving force feed back steering wheels. These controls would be bound with the in game characters, crafts or even turrets.

However, here lies the question. What about characters, crafts or turrets that are not controlled by the player? AI comes to mind. Better still, what about replays? Or how about in a multiplayer environment where certain crafts are controlled by some other players over the network?

These scenarios shows one thing. A controller that controls any element in a game should be abstracted from the physical input devices. They should only care about what to simulate when a certain command is executed without needing to know who is executing it.

Hence, I came up with what I call the Action System.

As you can see, the core of an Action System lies in the ActionManager. It will manage a list of action controls. These action controls are basically action devices(in red) bound to a controller(green) through what is called an ActionMap(blue).

Action devices can be anything that handles action inputs. It can be a real input device(keyboard, mouse or gamepad), AI device, Replay device or a Proxy. A proxy device is simply a device that clones whatever the true controlling device's(Owning devices) state. The proxy device is meant for network use only.

Bellow is a rough idea of how it would look like in a network environment with two clients connected to a server.


Now, the underlying structure of an ActionMap holds the key to how one interacts with a controller. It holds a list of actions that defines what is a toggle button, what is an analog axis or even a world vector for FPS styled games.

Having that, the next complicated one is the physical input. How does one bind a physical input to the ActionMap? Here's how I devised it to work. An action input device will hold a list of InputMaps. These InputMaps basically defines the bindings of the input to an action in the ActionMap. This design allows the designer to constraint what input type an action should use while allowing the players the freedom to define their own input within that constraint.

To cap it up, bellow is how the InputMap and ActionMap interaction will look like for an FPS.
Note the vector action doesn't have a direct input from the InputMap. It instead receives it's input from the controller that calculates the look-at of a player through the mouse axis input.

That's it. Next up I'll be talking about buffering the ActionMap for network prediction and Replay. Stay tuned. ;)
Posted by Lf3T-Hn4D
Just started working on different track variations. Heres a couple of destroyed track pieces.


Posted by Prometheus
Liquid Rock Games and Project Aftershock. All Rights Reserved.