Monday, March 11, 2013

Dark Side Jam: Rocket Builder






I made a game for the Dark Side Jam this weekend at NASA, it's called Rocket Builder, you can try it out:
Download: rocketbuilder02.zip


UPDATE 3/14:
I fixed the Fuel placed in the ground bug, if you want to update download this version and just copy and replace the rocket.exe file.  Also added altitude to the info.


Instructions:
Editing:
Left click to build beams and points, right click to delete.
WASD move viewpont
T to test
F1-F4 to switch between 4 available slots for rocket designs

1-7 switch beam type



Fuel Lines are one-directional, they will pump fuel from the black to red.  Ignition is also one-directional, make sure the triangle is pointing down.


Testing:
I toggles ignition
Left and Right arrows to contract hydraulics
Hold F for fast simulation
1-5 switch camera
P to pause, O to step one simulation frame at a time

Thanks to everyone at the jam especially Sam for being my consulting rocket scientist, it was a lot of fun!

UPDATE:
I fixed a bug with the fuel lines, they were only applying force to the fuel particles without an equal force to the beam (@MysticalEric made a rocket that just used fuel lines to propel itself) , now fuel lines should work a lot better.  I also added support for multiple hydraulic beams and a zoom to the in-game camera.

Friday, January 25, 2013

Nobody knows where you are, how near or how far

A New Zero

I've been making progress on different technical areas of A New Zero, as well as some progress on the gameplay design (although mostly in my head).  I'm not sure when the next version will be ready, but I'm aiming to have a good demo ready for GDC in March.


Voxel Terrain:
My goal for this is a bit ambitious, at least a 8192x8192x128 meter modifiable 3D terrain with a 0.5 meter detail.  The plan is to allow players to dig trenches, build roads and possibly mine resources, that's why I'm aiming for a 0.5 meter detail, should be enough accuracy for trenches and roads.  The 64 square kilometer size is about what I think will work for 5 or 6 cities, with enough space between cities for aircraft (version 0.78 had about 4 square kilometers, I felt the cities were a little to close together).

There's two main problems with this, memory and level of detail rendering.  The memory problem is pretty easy to calculate, if you have a byte for the density of each possible voxel, and there's 8192 meters times a detail of 2 voxels per meter, then it's 16384 times 16384 times 256, which is around 68 gigs of memory.  Luckily I've been writing voxel engines since the late 90's, so I've learned some tricks along the way.  One is to break the world into sectors, say 8x8x8, and only store the densities if it's not totally empty or full.  That helped quite a bit, since most of the world is empty space, but it was still taking a couple gigs of space.

The next step was to compress the sectors, since most of the 8x8x8 sectors are fairly uniform I figured they would compress quite a bit.  Originally I looked into arithmetic encoding, which was interesting, but not really practical (too slow and complicated).  Instead I went with simple run-length encoding, which is fast, simple and compresses the sectors to around 1/10th their original size on average.

For the level of detail rendering I started by building lower detail meshes of areas, so farther away it's building the mesh out of average densities of say a 4x4x4 chunk of voxels.  The problem with this is the lower the detail the worse it looks, triangles are representing big chunks, and either miss details or overlap empty spaces.  There are ways of doing adaptive level of detail, but that would require building the high detail mesh, and handling changes of LOD between areas, which was all getting too complicated.  Instead I'm using a ray-tracing method, which I'll probably write a separate blog post about soon.



Human Physics:
This is another ambitious technical challenge, probably the most difficult I've attempted.  The physical part of the body is working pretty well now, the main challenge is the AI that controls the virtual muscles.  Lately that's mostly been trial and error, thinking of a new method to solve a particular situation, then finding other situations where that doesn't work.  I do have the 2D prototype walking up stairs finally, which was one of the trickier situations to solve.  I will probably try this method in A New Zero soon, along with a few other ideas I've come up with, like balancing using the feet instead of the waist.

Sub Rosa

I've mainly been working on traffic simulations and the city rendering engine, you can see some of the results in these videos, more to come soon:




Wednesday, November 21, 2012

How to fix Steam Greenlight


Steam Greenlight needs to be fixed, with games like Incredipede not approved yet despite being a unique, fun and finished game.  I have one of my games, Sub Rosa, submitted but haven't really bothered with trying to get votes since I think the system is flawed.  Here's how to fix it:

1. Pre-order instead of thumbs up
The current system of thumbs up is meaningless, it's easy to get someone to follow a twitter link to a webpage and click thumbs up.  Instead users should commit something like $5 towards a pre-order if they want to see a game on Steam, it would make votes more meaningful and would also give a better indicator of which games will do well.

2. Allow demos that can be played in Steam
This voting system is supposedly to find the best games, but currently it rewards the best videos, descriptions and screenshots.  If developers could upload demos that could be played through Steam it would help the best games rise to the top.

3. Curate your damn website
Valve is making billions off of Steam, yet their answer to too many fake/offensive submissions is to charge indie developers $100?  How about hiring someone to actually look at the submissions?  A simpler way of solving that problem would be to require the account has purchased a game, if it's a fake/offensive submission then they lose that account.

Instead of taking the 10 or 20 games with the most votes there should be some people at Valve actually looking at the games, playing them, seeing how far they are from release.  Right now when I see 20 games have been approved through Greenlight I ignore it because I have no idea how close to release they are.  I also don't really care which developers have won the social media contest that is Greenlight currently.


Thursday, October 18, 2012

A New Zero Update 10/18/12


I've been working on various aspects of A New Zero, human physics, tank physics, aircraft physics, landscape rendering, landscape generation and economy.  You can see the human physics in the video, still needs some work but it's getting close to playable.  Surprisingly this video I put together in about an hour with awkward movement got some press, including Reddit, PC Gamer, Rock Paper Shotgun, Kotaku and CliffyB.  It's good to see that people are looking for something new/different in an FPS, if I can get it right I think it will be revolutionary.

For tank physics I finally figured out a good gear simulation, the tanks and trucks have physically modeled wheels, suspension, engines and gears.  The previous gear simulation was off, so in low gear not enough torque was transferred to the wheels and high gear too much was.  In the ANZ armor test you can kind of feel this, it's especially important for tanks since they have around 100:1 ratios in the lowest gear.  The cars in Sub Rosa also have the gear issue, not as noticeable but the new simulation should make them a bit easier to drive.


There's an image of the voxel landscape renderer, the new feature is ray tracing for far away sectors.  I had been thinking about how to render low level-of-detail (LOD) for areas in the distance.  The usual solution to this is build a mesh using lower detail polygons, combining 2x2x2 blocks into one block, then 4x4x4 and so on.  The problem with this is it still takes time to generate these meshes, and they look progressively worse unless you do some sort of progressive LOD, which is even slower.  There's also issues with cracks between LODs and a lot vertex processing.

Instead I've decided to render those areas as boxes, and ray trace through the voxel grid with a pixel shader.  It takes more pixel shader time obviously, but it saves vertex shader time, and occlusion culling is automatic (pixels behind the landscape mesh, objects or buildings will be Z-culled).  It's also much faster to generate lower LOD voxel grids, since it's basically a 3D texture mipmap.  The quality of the ray trace can be adjusted based on the GPU speed.  You can see in the image where it changes from mesh to ray trace, I still have some work to do on the lighting and ray trace quality, but I'm fairly confident this is the right direction.

Wednesday, October 3, 2012

Sub Rosa 0.07b

Download: http://www.crypticsea.com/subrosa/


0.07b changes

Added a regional manager:
Player with the highest net worth on the team can fire other players by killing them before the round starts.

Changed death tax:
If you're shot by your own teammate you don't lose net worth.

Money:
Players get $150 salary for each round, bonus is flat rate plus 20% of stock value increase.

Added buy/sell 10 and 100 share options.

Added observer freecam


0.07 changes

Added vehicle keys:
Player holding the key in the car activates it, doesn't have to be driver.  Player holding the key at the end of the round will get the car the next round as long as it's not destroyed.

Added Three team deal

Added vehicle drag
Added accounts
Added persistent stats

Added weapons (MP5,AK-47,M-16)   

Added vehicles
Turbo
Van
Beamer
Minivan

Thursday, September 13, 2012

Cryptic Sea Update 9/13/12


Sub Rosa:
I've added different disk colors, which will allow for more mission types.  One will be acquisition with two disks, so one team might want the red disk and the others will want the black disk.  I think this will create some interesting situations where one team might get the disk the other wants, and they'll have to work out a trade.  The other mission type is a three-way deal, where each team starts with a disk and all three teams need to do the deal.  Or kill each other.

I've also been adding some buildings to the city, it's still very basic but I have a park and a new apartment building.  There's also three tunnels for the AI to exit so they won't always be heading to the South West tunnel.  The next version will probably be the last with this city, I'm going to rewrite the engine so the city can be much larger and have interiors of buildings.

Other new features include weapon/vehicle purchasing, so at the beginning of the round there's a buying menu kind of like Counter-Strike.  I'm not totally sure how it will work with keeping weapons and vehicles, if you lose them when you die, or if another team can steal them.

Finally there's an account system, so I'll have leaderboards for who has the most cash, and I'll probably keep track of stats like rounds played, percentage of successful deals and such.

Long term goals include an open-world mode, improving the shooting/player movement, and more weapons, vehicles and items.

Also I put Sub Rosa on Steam Greenlight, vote for it here:
http://steamcommunity.com/sharedfiles/filedetails/?id=95405750
Or find another way of wasting 15 seconds of your day.



A New Zero:
I'm still working on the human movement, but I've made some progress the last couple weeks.  There's still a lot to be done: vehicle physics, landscape generation, resources/mining, building interface, economy and a bunch of other stuff.  Once I get the infantry combat working I'll probably do a test version of that, I want to test out elements of the game before doing the full strategic mode.

Tuesday, August 21, 2012

Sub Rosa 0.06


Download: http://www.crypticsea.com/subrosa/

UPDATE: Mac Version is up
Version 0.06b has some new voice chat options, and a basic help

The Linux dedicated server doesn't have any dependencies so it should run on any server.  I'll do a Linux client once I get the video card drivers working, which could be never.

Russians:
http://redcyberzone.ru/games/subrosa.html

THIS IS A TEST VERSION, I CAN"T TEST FEATURES LIKE VOICE CHAT ON MY OWN.  A LOT OF THINGS ARE NOT FULLY IMPLEMENTED.

Changes:
Items (cash, disk) need to be put in the safe room in the base, once all items are in safes the round ends, the items don't disappear when dropped in the base anymore.

Teams have randomly assigned roles, and sometimes two teams will have money to buy the disk.

Scoring is different, cash is worth $250 per block, if you lose it you lose that money.  Disk value is in the mission briefing.

New mission type:
Acquisition:  All teams try to intercept an AI controlled car and take the disk

How the voice chat works:
In the voice options menu  you can configure to broadcast voice when over a minimum level or use push to talk (hold a key while talking to broadcast)

Cell phones:
Press Number pad 1-3 to call another team in dialing mode, Press Number pad 0 to answer/hang up.  Left-click to toggle talking and dialing (voice is only transmitted when in talking mode)

Yeah I know it sucks.

Things I'm still working on:
Weapon purchasing
Vehicle purchasing
Fixing up voice chat
Item interface (cell phone, cash)
Accounts
Client admin
More missions
Face options/editor
Lots of graphics fixes/improvements
Help/tutorial