RC Car game - work log

Since I never seems to get anything done or released these days, I figured if I make the project public, maybe I will be pressured into finishing it. So here it is… Concept and story wise, I have some vague ideas. And I am not looking for any team members at the moment, this thread will be simply a place for me to keep myself organized and show the community my progress.

Video:

One-liner:
The game will be some sort of toy RC-car racing game, with emphasis on graphics and over the top driving physics. I got some inspirations from Revolt, an old but classic driving game.

Progress, tentative features and task list:
[|||||-] Driving physics (i am using Bullet’s build-in vehicle constraints, lot of python, minimal logic bricks)
[|||–] Graphics (GLSL pipeline, with a few post processing filter for additional effects)
[||—] Menu, intro, GUI (shouldn’t be hard, i’ve done this before, just had to make it slick)
[-----] In-game HUD (again, should be easy with overlay scene and a bit of Python magic)
[-----] AI car (none planned at the moment, 2 player multiplayer is more fun than even the most intelligent AI)
[|----] Game mechanics and goal (Still in the planning process, will likely combine timed races with item pick ups and powerups.)
[||—] Multiplayer (I already have a some prototypes running, 2 player peer to peer multiplayer over the internet is easy)
[-----] Audio (will not consider this until pretty late in the development process)
[||—] Overall framework for game (including workflow, engine framework, and all basic game functinalities.)
[-----] Content creation: (including making additional vehicles, more maps, more assets and graphical varieties)

For Update: See end of this thread.

Get something done by tonight.

How’s that for pressure :wink:

EDIT: And I hoped you don’t get flamed because some people on the forums think it’s against the law to post without screenies.

I started yesterday with an old old old vehicle demo and re-did all the vehicle physics to bring it completely up to date with 2.49a. Been using python heavily, logic bricks gets too hard to maintain for a large project.

I also went through a lot of my old files and started collecting useful files/scripts/shaders for this project. Here is an initial screenshot from yesterday:

I also wrote a minimalist network interface in python that sends any serialized data across a network, I want this game to be multiplayer… will have to test lag tonight.

Attachments


Lol well that was fast. oh and where do you get that texture and how do you apply it to everything?

And the screenie looks nice. The car almost looks like a render.

@Zootanore, yeah I went crazy with shaders, added a realtime ambient occlusion shader and some simple GLSL shadows to add some realism to the scene.

Here is a multiplayer network test i just did:

And I hoped you don’t get flamed because some people on the forums think it’s against the law to post without screenies.

The only difference between Mike Pan and everyone else is that Mr. Pan (Peter Pan :p) has a portfolio. It’s quite nice actually. He’s also a frequent contributor to the forums–he wrote the DoF shader that all the big guys use (Endi, Martinsh etc.)

Since I never seems to get anything done or released these days, I figured if I make the project public, maybe I will be pressured into finishing it. So here it is…

If you don’t finish this game I will find you…

peace,
-nick

Would you mind sharing you networking script? I’m interested in networking and wouldn’t mind seeing how you structured it.

I had a little chat with Moguri today about sending info over a network, it was basically about how using cPickle created unnecessary characters making the string that is sent over the network larger. So to reduce lag you could try and make the string as short as possible. Something like ‘p=[0,0,0]:v=[15,0,0]’, p = position, v = velocity. (just open a cPickle file and see the wasted chars). (and also, for sending orientation its possible you could send a single vector (rather then a matrix) and align the z axis to the global z axis then the y axis to the vector, that just cuts out another ~10 chars. This only works if you’re not intending to have cars flip though)

Anyway, this looks promising. Keep up the 3 updates a day :slight_smile:

I need to find realtime ambient occlusion.

I am always fascinated by the multiplayer stuff. I don’t know where do start for it. I have no idea what a socket is… I don’t even know python. Jeez I have a lot to go.

Looks amazing once again.

@andrew, now I realized that cPickle probably isn’t too useful for tiny amount of data in very simple structure. I’ve gone back to passing simple strings using ‘,’ as concatenation. Whatever I can do to save a few bytes of data. :smiley:

Here is my symmetrical network code:


# Created by Mike Pan
# Todo: auto-self IP detection?

import GameLogic as G
import socket

G.ownIP = "xxx.xxx.xxx.xxx"
G.peerIP = "xxx.xxx.xxx.xxx"
G.port = 4000
G.buffer = 4096

addr = (G.peerIP, G.port)

signature = "Sent from " + G.ownIP

def init():
    # create UDP socket for sending datagram
    G.sender = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    G.sender.settimeout(0.01)
    G.sender.setblocking(0)

    # creates UDP socket for receiving datagram
    G.listener = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    G.listener.settimeout(0.01)
    G.listener.setblocking(0)
    # Win32 needs the socket binded:
    try:
        G.listener.bind((G.ownIP, G.port))
    except:
        print "Binding Listener failed"

    
def comm():
    own = G.getCurrentController().owner

    # receive from peer
    try:
        data, port = G.listener.recvfrom(G.buffer)
        print data.split(',')
        # process received data[] here
    except:
        print "Receive failed"
    
    
    # send to peer
    # generate data to be sent here:
    #string = str(own.worldPosition[0])+','+str(own.worldPosition[1])+','+str(own.worldPosition[2])
    string = signature+str(own["counter"])
    own["counter"] += 1
    try:
        G.sender.sendto(string, addr)
    except:
        print "Send failed"

Spent most of the time tweaking vehicle physics for stability while retaining the fun of driving. modeled a ‘skeleton’ car just to test drive around:

Next task: Start building a few test maps

Attachments



Nice car, I love the batteries!
Project BlenderKart could use something like this…

Yeah I just read about project BlenderKart. But i really want to do a game from start to finish myself, so… :frowning:

[removed for not working]

edit: http://www.youtube.com/watch?v=RHBEJLlHz04

Attachments


That looks awesome, great job.

The video does not work, I thought it may be still uploading/converting but it has been some time now. When I load the page it says “Sorry, there was a problem loading the video”, hmm.

I get the error too

Wow!
If this is a RC car, then are you planning on having any plastic building bricks in your game?(kind of like LEGO’s, but a custom off-brand?)

same error

if u have a vimeo account, you can download the video off the site. aaaaaaaannnddd… I wanna try :frowning:

hmmm, i thought it was converting too… will try to reencode and upload again tonight… i am off to work, sorry guys. Meanwhile, if you get a vimeo account, you can download the original file (quicktime h264) from the bottom right.

edit: It’s live!

mpan, you are very talented.
(not talking about that video only)