• Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

About this blog

I forgot

Entries in this blog

Want to help me, well I am glad you asked.

Register at the indie pub and than vote for my two games: Big Eight Mini Putt and Big Porks Prime Time

Okay here is my current project Big Porks Prime Time. I am entering it into the indie pub contest.

Prime Time is the galaxies most popular reality tv-show in which you must slay the champion before time runs out, all the while dealing with the insanely sadistic Host "Big Pork".

Windows, MAC

Left Mouse Button to fire lasers
R to reload lasers
Right Mouse button to fire rockets
Escape will pause the game and bring up the menu

->Blue beacons will recharge rockets
->Yellow beacons act as checkpoints
->Pink beacons act as teleporters

If you could give it a try and leave some comments about the bugs and whatnot, that would be good.

Version 1.005 prototype
I added some cheats.
In the upgrade screen (press 1 to get 2000 gold), press 0 to reset the mechs and gold.

In game pressing 1 will replenish health, pressing 9 will refill your rockets and pressing 9 will give you two extra minutes.
1) Why dont flash developers use flash portals as a "demo shop" for the purpose of selling there game.

Take a look at the game Guns of icarus (a unity 3d game that is doing just that) on shockwave.com, its getting around 1k plays a day with an option to buy the game. In this particular instance its not what you would call "magic", guessing here I would say its getting around 10-30 sales per day, using a CR of 1-3% -- which is standard).

This strategy is too early to be useful at this time, especially because the Unity plugin penetration rate of unity so low, we have very few options Wooglie, gamejolt and Shockwave (which is the only big one). With the advent of google chrome and inclusion of NACL it will means that you will not have to install a plugin to play your game, that removes the penetration rate as a barrier.

Lets look at a single portal.
Armor games. The average game will get around 500k plays before its knocked off into oblivion.

If we said that say thats 5k buys at ten dollars a pop thats 50,000 (using a CR of 1%). If its a good game than its 150,000 off of 1 single web-portal.


If we really cut to the chase for why this matters for Unity, it's because what we're showing is Unity running in Chrome with no plugin at all. That's right, there's no Unity Web Player installed on the machines running Unity content in Chrome. Rather, with Google's clever technology, we're running Unity content in Chrome using just default access and no additional installation or user interaction. It's kind of wild!

Google Chrome The Future

I was looking at the indie games on steam. Found Zombie Driver, I looked at the metacritic score which is 59, this is because some jerk gave it 0, that seems unbelievable since the rest were at least in the 70's. That seems beyond reasonable, and makes me pretty furious! :evil:

That is beyond resonable, there is no way anyone should be allowed to give a game such a low score and be considered a "metacritic" rater.

Zombie Driver Meta Critic Rating
Prototype II!
Car project using temporary art. This is my favorite project and it only took one day to prototype it and its already somewhat fun.
Car Project
The good people at Rake in The grass have released source code for there game Lava Mortus I thought it was worth a note.

Source code of Larva Mortus


Here is the source code of one of our bigger game - Larva Morus. Larva Mortus is an action game with a horror atmosphere. It uses Torque Game Builder 1.1.3. I publish the source code as it is.

I have come an conclusion, if you are making game than you are going to need a set of tools, and an engine (its going to make your life a heck of a lot easier). Using a pre-existing game engine will save you alot of time and hassle but might cost you later if you hit its limitations. At the beginning project, everyone in the group will be really excited (but this excitement only lasts a short time) if you squander this time working on the engine (some optimization, or file loading) rather than the game you will find that the rest of the team will lose interest and you will a series of lulls in production. That is why I advise you to already have your engine finished before starting your project (or using a preexisting engine).

A design document is actually very important, as it will allow to ensure that the game has enough gameplay to warrant the project, it is also helpful to convey to the rest of your team a clear and coherent vision of what you are trying to achieve. Without a design document you are going to be lost.

At the beginning of a project you need to be able to prototype your idea to see if it should be scrapped or continued (the quicker you can do this the better off you are). It is imperative to ensure that your team members that you explain that you are in the prototyping phase. For example you should have your modelers create a low poly version of your assets, so that you can get a feel for how it should look but ensure that they are not spending massive amounts of time (otherwise they will not be too happy to spend 3 weeks on something only to scrap it).

Finally you are going to need deadlines, this might seem like a bad idea (especially when the project members are doing in there free time and not getting paid) but its essential or you will soon find yourself drowning in a pool of inaction.

Red Storm

Sea storm studios are working on our second game: R"ed Storm", third if you count Life on the Line (now on hold).


The sounds effects are custom, we dont have the custom music but it is in progress.

Red Storm first look

Sea storm studios are working on our second game: "Red Storm", third if you count Life on the Line (now on hold), a top down shooter.

The first version is to be called "Infinite Mode" in which you have to survive as long as possible and rank enough the highest score.

Norton is a top office in ROOK, hates commies with a bitter passion. You can think of him like Captain America (or the comedian from watchman), except he doesn't follow any altruistic code, the ends justify the means, always. If he has the enemy by the the throat, he will snap it, if a terrorist takes a hostage he will shoot right through the hostage to get to the terrorist.

Firt version

Second version

The heads of State of the Kings Cross are almost totally corrupt, under the influence of the Shadow Council. Save for a small band of nationalists who are aware of the subversion and and are sick of it. There answer was to create ROOK, a black op unit that is dedicated to removing the cancer that is infesting society

ROOK Emblem
My version

Jingquans verion:


I have been banging my head for a while now, trying to get a simple server up, that I could host multiplayer games. I could not get around my router, tried opening my port, tried forwarding my ports but to no avail. I thought about getting a dedicated server to work as a facilitator for the NAT punch through... but that is so expensive (100 USD per month seemed too much for mucking about). Then I remembered about Hamachi, which solves the problem of connecting from behind a router. I didnt think that you could actually "connect" to the "Hamachi IP address", but turns out you can.

from the wiki

Hamachi is a zero-configuration virtual private network (VPN) shareware application capable of establishing direct links between computers that are behind NAT firewalls without requiring reconfiguration (in most cases); in other words, it establishes a connection over the Internet that very closely emulates the connection that would exist if the computers were connected over a local area network. C

Native Client


Native Client is an open-source research technology for running x86 native code in web applications, with the goal of maintaining the browser neutrality, OS portability, and safety that people expect from web apps. We've released this project at an early, research stage to get feedback from the security and broader open-source communities. We believe that Native Client technology will someday help web developers to create richer and more dynamic browser-based applications.


1) Download and Install the following [ Unless you dont need to ]

Native client
,Python 2.4

2) Setup environment variables
PATH: Add your python directory to the path environment variable. For example: C:\python24
NATIVE_CLIENT: the base directory you installed the native client. For example: C:\NativeClient

3) Python Test: The result should be a picture of the earth
->Open up the command prompt
->exectue the command cd %NATIVE_CLIENT%\nacl\googleclient\native_client\tests\earth
->python run.py

4) Install and use the plug-in
cd %NATIVE_CLIENT%/nacl/googleclient/native_client

Ensure to add the extra arguments... --prebuilt firefox_install, otherwise it wont work!
scons.bat --prebuilt firefox_install

Played around with Googles Native client... allowing you to run x86 C++ code inside the browser. I tried to get to use SDL but didnt manage to, but you can play around with the pixels directly (basing it off the "life sample")

#if defined(HAVE_THREADS)
#if !defined(STANDALONE)
#include "native_client/common/standalone.h"

typedef unsigned int u32;

// global properties used to setup life
const int kMaxWindow = 4096;
const int kMaxFrames = 10000000;
int g_window_width = 512;
int g_window_height = 512;
int g_num_frames = 50000;

// seed for rand_r() - we only call rand_r from main thread.
static unsigned int gSeed = 0xC0DE533D;

// random number helper
// binary rand() returns 0 or 1
inline unsigned char brand() {
return static_cast(rand_r(&gSeed) & 1);

// build a packed color
inline uint32_t MakeRGBA(uint32_t r, uint32_t g, uint32_t b, uint32_t a) {
return (((a) << 24) | ((r) << 16) | ((g) << 8) | (b));
struct Color
u32 argb;
Color(u32 r,
u32 g,
u32 b,
u32 a)
argb = MakeRGBA(r,g,b,a);


struct Surface
int w;
int h;
int d;
u32* pixels;

Surface(int tw,
int th)
pixels = new u32[w * h];

for(int i=0; i {
pixels= MakeRGBA(0xff,128,0,0);
virtual ~Surface()
delete [] pixels;

virtual void drawPixel(int tw,
int th,
u32 argb)
pixels[th * w + tw] = argb;


struct Box
int x;
int y;
int w;
int h;
u32 color;
Box(int tx,
int ty,
int tw,
int th,
u32 tc)

void set(int tx,
int ty,
int tw,
int th,
u32 tc)
color = tc;
void render(Surface* surface)
for(int i=0; i {
for(int j=0; j {
int tx = x + j;
int ty = y + i;

surface->drawPixel( tx, ty, color);

struct Canvas
Surface* surface;
char *cell_in_;
char *cell_out_;
Color color;
Box b;
Box b2;
Canvas(Surface* s,
const Color& tc)
surface = s;
color = tc;

cell_in_ = new char[surface->w * surface->h];
cell_out_ = new char[surface->w * surface->h];
for (int i = 0; i < surface->w * surface->h; ++i)
cell_in_ = cell_out_ = 0;

b.set(0,0,100,100, MakeRGBA(0xff,0xff,0xff,0xff));
b2.set(150,150,100,100, MakeRGBA(0xff,0,0x0,0xff));
virtual ~Canvas()
virtual void draw()
virtual void update()
for(int i=0; i< surface->w * surface->h; ++i)
surface->pixels = MakeRGBA(0xff,128,0,0);

virtual void swapBuffers()
char *temp = cell_in_;
cell_in_ = cell_out_;
cell_out_ = temp;
virtual bool pollEvents()
NaClMultimediaEvent event;
while (0 == nacl_video_poll_event(&event))
if (event.type == NACL_EVENT_QUIT)
return false;
return true;

int main()
//attempt to initalize the thing
int r = nacl_multimedia_init(NACL_SUBSYSTEM_VIDEO | NACL_SUBSYSTEM_EMBED);
if (r == -1 )
printf("Multimedia system failed to initialize! errno: %d\n", errno);

//attempt to initalize the other thing
r = nacl_video_init(NACL_VIDEO_FORMAT_BGRA, g_window_width, g_window_height);
if (-1 == r) {
printf("Video subsystem failed to initialize! errno; %d\n", errno);

//create our surface
Surface *surface = new Surface(g_window_width, g_window_height);
Canvas canvas(surface,Color(1,0,0,0));

for (int i = 0; i < g_num_frames; ++i)
if (!canvas.pollEvents())


Also wrote a simple bitmap reader but I couldnt get fopen to read the damm files.

#pragma pack(1)
struct RGBColor
char r;
char g;
char b;

struct BitmapHeader
//must always be set to 'BM' to declare that this is a .bmp-file.
short bfType;
//specifies the size of the file in bytes.
int fileSize;
//must always be set to zero.
short bfReserved1;
//must always be set to zero.
short bfReserved2;
//specifies the offset from the beginning of the file to the bitmap data.
int bfOffBits;

struct BitmapInfo
int biSize;
int biWidth;
int biHeight;
short biPlanes;
short biBitCount;

int biCompression;
u32 biSizeImage;
u32 biXPelsPerMeter;
u32 biYPelsPerMeter;
u32 biClrUsed;
u32 biClrImportant;
#pragma pack()

struct Bitmap
BitmapHeader header;
BitmapInfo info;
u32* quads;

int width;
int height;
RGBColor* buffer;

Bitmap(const char* fn)

int load(const char* fn)
int rc = -1;
char tmp[256];

FILE *f = fopen("testdata256", "wb");
if (NULL != f) {

FILE* fp = fopen(fn,"rb");
rc = 1;

u32 fileSize = ftell(fp);
u32 headerSize = sizeof(BitmapHeader) + sizeof(BitmapInfo);
if(fileSize > headerSize)



if(header.bfType == 19778 &&
header.bfReserved1==0 &&
header.bfReserved2==0 &&
info.biSize == 40 &&
info.biBitCount == 24 &&
info.biCompression == 0)
fileSize = ftell(fp);

width = info.biWidth;
height = info.biHeight;

//printf("width: %d, height:%d, bitsPerPixel:%d, biCompression:%d\n",
// width,height,info.biBitCount,info.biCompression);

//printf("sizeof color:%d\n",sizeof(Color));
int dataSize = width * height;
if(width > 0 && height > 0 && width < 4096 && height < 4096)
buffer = new RGBColor[ dataSize ];
fread(buffer, dataSize,1,fp);

//int index = 0;
//for(int i=0; i //{
// for(int j=0; j // {
// RGBColor c;
// memcpy(&c,buffer+index,sizeof(RGBColor));

// //fread(&c,3,1,fp);
// if(c.r==0 && c.g==0 && c.b==0)
// {
// printf("_");
// }else{
// printf("#");
// }

// //if(c.r==0)
// //{
// // c.r=255;
// //}
// //if(c.g==0)
// //{
// // c.g=255;
// //}
// //if(c.b==0)
// //{
// // c.b=255;
// //}
// memcpy(buffer+index,&c,sizeof(RGBColor));

// index += sizeof(RGBColor);
// }
// printf("\t%d\n",i);

//FILE* fp2 = fopen( tmp, "wb");
// fwrite( &header,sizeof(BitmapHeader),1,fp2);
// fwrite( &info,sizeof(BitmapInfo),1,fp2);
// fwrite( buffer,dataSize,1,fp2);
// fclose(fp2);

return rc;

Radar Shader

Finally got my radar working... and I think its even CG complaint



float4 RADAR_ANG;
float4 RADAR_RING1;
float4 RADAR_RING2;

sampler RT : register(s0);

float4 ps_main(float2 iTexCoord : TEXCOORD0): COLOR
float4 color = float4(0,0,0,0);
float2 centre = float2(0.5,0.5);
float2 dir = iTexCoord - centre;
float dist = length(dir);

color = tex2D(RT, iTexCoord);// * float4(0,0,4,1);
float ang = (180 + atan2(dir.y,dir.x) * 57.325);

if(ang> RADAR_ANG.x && ang {

if((dist > RADAR_RING1.x && dist < RADAR_RING1.y) || (dist > RADAR_RING1.z && dist < RADAR_RING1.w) || (dist

> RADAR_RING2.z && dist < RADAR_RING2.w))
color += RADAR_COLOR;

// color *= float4(0,0,1,0);
color.a = .5;

return color;

Whats good about using scripts (luabind) is I can actually work on two projects at the same time (fairly easily).

Prime Time and Life On The Line can both use the same code base.

>Prime Time

>Life On The Line

Another cool feature about youtube is that you can actually select music to add your to videos... meaning that you dont need to embed them while uploading (Hope there selection grows) but for now I hope you like "bodies" by slipknot

Supposedly you can add &fmt=18 to increase the quality but I am not so sure.

return 0

Got the first released game done, which was Tic Tac Toe 3d

Working on a game called "Prime Time" think of the runnning man/smash tv. Check out the progress

Youtube Annotations:
I am using youtube to post progress videos, adding there annotations to the "Prime Time" videos to t make them more interactive. Not much interest at this stage but we will see how it goes...

Also working on a game called Life on The Line: first arena based person shooter. The project seems to have reached the tipping point between death and life, how ironic the projects "life is now on the line"


Alright back in action.

Got the first released game done, which was TicTacToe3d.


Working on a smash tv type game you check out the progress on yotube.

Using youtube to post progress videos, adding Annotations to make it more interactive. Not much interest at this stage but we will see how it goes, as experiment.


I was trying to get my online highscore working. Couldnt get my access my code through netfirms (I enabled remote connections but it still wouldnt work-- fork that). Still cant get netfirms to read or write from remote databases

Finally found www.freesql.org which allows you access the databases remotely.

Code below


2D brawlers

What ever happend to the good old fashioned 2d brawlers, games such as turtles in time,maximum carnage and battle toads. There have been some attempts to modernize these games but in my opinion something has gotten lost along the way they are simply not fun, either they try to include complex 3d terrain (I dont want to do any jumping, bumping or rumping?), they have forgotten what made these games great, that is the simple bone crunching, key mashing battle royal.


I am working with xml data.

1)Save all data or just data that is not default?
Saving all data has the benefit of not requiring conversions (for example if the defaults ever changed) but at the cost of space

2) Write object desc def or just write all the data in the object desc
Saving all the data in the object desc creates a lot of waste (duplicative data), but it means that there is less synchronization if the object data ever changes.

For example:



Sure hope you like pictures because I have another one for you.

Added basic CCD for my projectiles, made a "bouncy bullet" it bounces off the walls.


I am working on creating and destroying actors however it seems the odd time ageia just likes to crash.

My Modeler has sent a picture of the machine gun... instead of the actual model.

Edit: What game is complete without a
>car gun"
! Still mostly stock art

The unreasonable reasonable
Looking for a freelance artist, that can model, animate, texture and do it a reasonable time and god damn it send daily progress reports.
Sign in to follow this  
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!