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)
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.
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…
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
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.
@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.
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:
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.
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.