100 Procedural Game Competition

Blitz3D Forums/Blitz3D Programming/100 Procedural Game Competition

Craig H. Nisbet(Posted 2004) [#1]
I posted a message in another thread about having a competition to create a 100% procedural game. This means that the game would have no external content(no images,B3D files, etc.) People seemed to like the idea, so I think we should do it.

Any ideas on what you think the rules should be?

I'm thinking...

* The entire game must be one bb file
* No packed resurces, like image files converted to data, or code
* No DLLs

I'm thinking of a time span of maybe two weeks.

What do you think

!!!Update!!!

Revised Rules

* Can be 2d or 3d
* No packed resurces, like image files converted to data, or code
* No Purchased Libs
* No DLLs
* Program can not create any external files during runtime.
* No External file references


Rob Farley(Posted 2004) [#2]
I like the idea... although I'm a little pre-occupied with Alien Breed at the moment.


Beaker(Posted 2004) [#3]
You know I did 2 competitions like this before (before Blitz3d)?

The two winners were LineOf7s and his circular pong type game (featured music and sound fx), and Micheal Ritzenbiscuitstains and his RSI shooting game (he later made 'Juno Nemesis' - http://www.mking.com/juno/ ).

Would be interesting to see what people could do in 3D. Good luck with it.


morduun(Posted 2004) [#4]
I'd say allow includes -- it's bloody tough to work in just one file. Aside from that it sounds good.


Craig H. Nisbet(Posted 2004) [#5]
I think the inclusion of libraries would make it far too easy. Making it a challenge is kind of the point.


Stevie G(Posted 2004) [#6]
Nah ...no includes sounds good to me.

How about two weeks starting Monday and entries posted on this thread by 12.00 midnight Sunday 7th?

I take it the game can be 2d or 3d ?


Craig H. Nisbet(Posted 2004) [#7]
Yep, I have no problem with that.


.rIKmAN.(Posted 2004) [#8]
Since when has using Include been the inclusion of libraries?

I`d agree with morduun, allow people to use includes to keep code tidy, especially seeing as though there is no limit to length and there are no external files.

Good luck to the entrants.


Gabriel(Posted 2004) [#9]
Doesn't a "no includes" rule give those people using the original IDE rather a disadvantage ( since it's practically unusable with source over 100k and gets pretty iffy with anything over about 20k if it's in the wrong mood. )


Tom(Posted 2004) [#10]
I take it the game won't be using sound effects then? :)


Craig H. Nisbet(Posted 2004) [#11]
Ok, I see your point about the includes. I guess that can be allowed. I just want to avoid having fancy purchased systems like swift shadow system, and the like, because that provides an unfair advantage to those that have those libs.


Gabriel(Posted 2004) [#12]
I just want to avoid having fancy purchased systems like swift shadow system, and the like, because that provides an unfair advantage to those that have those libs.


Good point. You could specify something like "no 3rd party code longer than 10 lines" or something so that people can still use little snippets of code without being able to use an entire system.


morduun(Posted 2004) [#13]
Or just how about 'all your own code, period' -- Syb hit the nail on the head about why I wanted to use includes.


Beaker(Posted 2004) [#14]
It should be possible to have sounds as long as they are generated procedurally, saved and loaded at startup.


BlackD(Posted 2004) [#15]
no external file creation. That means sure you can have sounds - but you don't need them as external files. Remember chip-sounds? You can create them very easily with Blitz.


Stevie G(Posted 2004) [#16]
BlackD - chip sounds? Any examples of this?

If I remember, when I was doing TANX - it was Rob Farley who gave me some pointers on creating a wav in code but this involved saving the data and loading it again so not an option.


Neochrome(Posted 2004) [#17]
oh yeah! hehe, would love to see this done in blitz


BlackD(Posted 2004) [#18]
Damn.. I thought you could use streams as files. Well, you CAN but only for reading/writing operations, not for operations like PlaySound. Okay - I guess sound is harder than I thought. :) Created a wave okay, and dumped it into a memory bank, but can't yet see any way to play that without a) writing a file, or b) calling a library. Grr. :) Well - we could always cheat and put 16KB of "FF" in Data statements in our EXE, find the data in the EXE and then write from memory bank to that position to play a sound, and thus create no external files. ;) But meh..

Why oh why can't you play streams! That sux. :) Unless, you use TCP streams on 127.0.0.1 to make Blitz thinking its opening up a file on a location, meanwhile you're actually just feeding the stream from a memory bank. Hmmm..

/me goes to play around some more..

You *can* create chip sounds easily with Blitz.. its just PLAYING them without writing a file thats a pain. Grr :D

Sample sin wav function.. of course you have to write the wav header first of all, then its just a matter of math.
samples=44100
volume=900
frequency=400
For n = 1 To samples
divider=samples/frequency
sample=(Sin(2*Pi*n/divider) * volume)
WriteByte wave,sample
Next



Craig H. Nisbet(Posted 2004) [#19]
lol, Creative minds work better in a limits space.


Stevie G(Posted 2004) [#20]
So, do we allow sounds to be created procedurally as above but save as .wav's, load into memory then delete or just go with the no sound option?

We could spot the cheats a mile away!!


Damien Sturdy(Posted 2004) [#21]
i still think blitz should allow memory access via "real" poke and peek commands :/


Craig H. Nisbet(Posted 2004) [#22]
Want to vote on lifting the ban on creating external files?


Damien Sturdy(Posted 2004) [#23]
only creating WAV i think- just so we can use music.


Stevie G(Posted 2004) [#24]
U planning on creating a 10 mb Jean Michelle Jairre masterpiece Cygnus coupled with a pong clone :)


Damien Sturdy(Posted 2004) [#25]
Hes my fave artist you know! and, the way i used to make music (on the bbc and a synth), thats not actually very impossible- Ive already written a synth in BB that used VB as a front end.

Lost the source yonks back :(


BlackD(Posted 2004) [#26]
Might as well lift the ban on creating external files. What's the harm afterall? It IS all still procedural. As long as everyone posts their code at the end we can make sure they're not cheating. :) Even creating image files.. whats a problem with that? I mean - theres going to be nothing in those images except what they draw to them. Now creating image files would be useless - unlike sounds, you can draw directly to an image in memory. With sounds however, there is no way (well there is a way and I'm testing it but it involves writing an HTTP server in Blitz and it seems an absurd length to go to) even if you create all sounds procedurally, to actually play them without writing out files. Same with models - I say, let them write a mesh out to a file if they want - they've had to create the mesh in code. The only danger is someone writing a conversion function to convert an entire model to DATA statements, then writing them all out at the start of the program. I just hope people understand the "no packed resources" means, NOTHING converted to data. Only to code. If you can create a pretty tiling texture in code - feel free, but don't draw it in PaintBrush, then convert it to data statements or whatever - same with models, sounds, etc.

I'm gonna start working on my entry now. When you think the rules are 100% clear, post the thread again. :)

Rules as I understand them at this stage:

Procedural Programming Competition
- 2D or 3D welcome.
- No resources packed into the EXE either in any form (as DATA, or in any appended method)
- All resources (sounds, images, meshes, etc) must be generated by code. (eg. AddTriangle, CreateImage, etc)
- All code must be your own, this is a competition of your programming abilities, not those of someone who posted to code archives or whatever.
- No calls to external libraries. Included .bb files of your own are welcome, but no DLLs, .decls, etc.
- Files may only be written out in instances where it is impossible to utilize a function of Blitz without writing a file. All the file in the data must be generate by code. Examples of uses for this:
... Sounds.
... Save game files.
... OpenMovie (if you use animated GIFs.. I don't see anyone generating an AVI in runtime :))
... LoadMD2 (remember though, the contents of the model must be generate by code, not DATA statements, so again I don't see people using this, but its here to illustrate the point.)

- No references to any files NOT created by your program. Ie, you can't decide to use DING.WAV as a sound effect simply because it's there.

Prize: A months supply of sausage rolls, kindly donated by Puki.

+BlackD


Craig H. Nisbet(Posted 2004) [#27]
Ok, I like that. Let's lift the ban on creating external files at runtime.

How about allowing level information to be stored at data in the program? I think that should be allowed. Or perhaps it might be better to force the coded issue.


BlackD(Posted 2004) [#28]
Level data should be allowed to be stored as data. It's not a packed resource. I mean, sure - it "can" be, but only in the sense that you can create a level editor which will create the data statements for you - in which case you need the level editor in the first place. You're not saving any time. The alternative (dim map(100,100):map(1,1)=tree:map(1,2)=grass:etc) is silly. :)

Anything that would naturally be stored as data, of course, should be. We're just trying to avoid people packing information generated externally in as data, and I think most people understand that.

+BlackD


Damien Sturdy(Posted 2004) [#29]
you can generate level data using fractals i suppose? but use DATAS for that, i think its good...


Damien Sturdy(Posted 2004) [#30]
Say, i started mine and realised id already made the game once before on the BBC (where external files were darn impossible unless you wanted the player to keep hitting play n rewind :/


Craig H. Nisbet(Posted 2004) [#31]
I think when you submit the game, all the includes should be compressed into 1 bb file then post the code on this forum. Then you could just copy the code into the editor and run it. What do you think? Is there a limit to the amount of text a forum post can handle.


Damien Sturdy(Posted 2004) [#32]
i would do that anyway, but older IDEs seem to screw up with it.


Craig H. Nisbet(Posted 2004) [#33]
Procedural Programming Competition

I'm good with these being the final rules. I say it officially starts Monday and ends two weeks from then. If you guys all agree then I will post a new thread of this as the official final rules.

- 2D or 3D welcome.
- No resources packed into the EXE either in any form (as DATA, or in any appended method)
- All resources (sounds, images, meshes, etc) must be generated by code. (eg. AddTriangle, CreateImage, etc) Although level defination data (like array data is valid)
- All code must be your own, this is a competition of your programming abilities, not those of someone who posted to code archives or whatever.
- No calls to external libraries. Included .bb files of your own are welcome, but no DLLs, .decls, etc.
- Files may only be written out in instances where it is impossible to utilize a function of Blitz without writing a file. All the file in the data must be generate by code. Examples of uses for this:
... Sounds.
... Save game files.
... OpenMovie (if you use animated GIFs.. I don't see anyone generating an AVI in runtime :))
... LoadMD2 (remember though, the contents of the model must be generate by code, not DATA statements, so again I don't see people using this, but its here to illustrate the point.)
- No references to any files NOT created by your program. Ie, you can't decide to use DING.WAV as a sound effect simply because it's there.


Damien Sturdy(Posted 2004) [#34]
DORGH! I ALREADY STARTED >.< Does that mean my entry cannot be the above now? :'(


BlackD(Posted 2004) [#35]
Oooh oooh.. big question - multiple entries allowed? :D

+BlackD


BlackD(Posted 2004) [#36]
Note to folks: No references to any files not created by your program

That also means: no fonts. You gotta create your own pixel fonts in runtime, or else use default font. I say.. BRING ON THE PIXEL FONTS. :D

+BlackD


Jeremy Alessi(Posted 2004) [#37]
http://www.blitzbasic.com/codearcs/codearcs.php?code=1149

Does that count for my entry?


BlackD(Posted 2004) [#38]
No.. sorry. :)

1. There is a two-week time limit. Prior created work can't be judged as such.
2. It's got fonts.. but mainly #1

Although it's really up to Craig. I guess he's running the comp. If he accepts it, then fine.

+BlackD


Damien Sturdy(Posted 2004) [#39]
what about what i just started for this? is that classed as prior created work? cuz i started it yesterday specially for this :(


BlackD(Posted 2004) [#40]
Hehe Cygnus - in that case, you gotta post your finished product two days early. ;)

+BlackD


Damien Sturdy(Posted 2004) [#41]
wooo!
okiedokie then, i can continue working on it. :D


BlackD(Posted 2004) [#42]
hehe.. a procedural anime pic. :) Pity blitz doesn't have built in FILL commands. Coloring with rects looks crap.. :) Works in Blitz3D or BlitzPlus.. cause its simple. :P


Am I winning? ;)

+BlackD


aCiD2(Posted 2004) [#43]
Hehehe, nice BlackD :)


Damien Sturdy(Posted 2004) [#44]
feck, thats amazing!


cermit(Posted 2004) [#45]
So.. no Data statements? That would make a lot too easy maybe.
But then is this allowed ?

Dim array(9, 9)
aray(0, 0) = 16
aray(0, 1) = 12
aray(0, 2) = 16
aray(0, 3) = 0
etc

Instead of

Dim aray(9, 9)
for y = 0 to 9 : for x = 0 to 9
Read array(x, y)
next : next

Data 0, 14, 0, 8, 16...


BlackD(Posted 2004) [#46]
It doesn't say no data, just you're only not allowed to pack resources in as data. In other words, you can't write a routine to convert an image to pixel color values and save them as data.

DATA for conversation dialogues, maps, etc, are welcome. The few exceptions would be where DATA is the equivalent of a packed resource. For instance, using DATA to build images, or meshes.

It is possible for people to cheat, but we're hoping they won't. Just like the line saying "all your own code". We can't necessarily judge if every routine in your program IS all your own code. If someone cheats, they may or may not be caught, but in the spirit of the community and the competition - hoping nobody will.

Besides - if you're caught cheating, Puki won't give you the sausage rolls. Anyway, if you do slip up and do something not allowed by the rules - it doesn't matter. :) You'll still make a cool game and share it for everyone.. it just means you won't be TEH WINNAH!

+BlackD


Damien Sturdy(Posted 2004) [#47]


heres an update....


BlackD(Posted 2004) [#48]
Nice work Cygnus! Can't wait to try it. :)


Damien Sturdy(Posted 2004) [#49]
Well, I'l put it up soon.... dont know if i should wait till the end of the compo to show you lot tho!

Includes soundFX (through Sound chan,vol,pitch,length command, similar to the BBC system's sound)

Anyhoo, i gota fix one last bug in a football game now- Catch you later :/ *hopes the boss will be happy*

BlackD, Who is actually running this compo? lol!


BlackD(Posted 2004) [#50]
hehe.. Craig. :) But he doesn't seem to be around a lot. Maybe he's work on an entry. :D Comp officially starts tomorrow so he should start a new thread then and maybe clean up the rules a bit to answer some of these people's questions.

+BlackD


Craig H. Nisbet(Posted 2004) [#51]
Yeah, I gotcha. I'll start the thread now.


BlackD(Posted 2004) [#52]
the data rule should be simply,
-No DATA statements where use thereof are the equivalent of a packed resource (eg, pixel data, mesh data, sound data). Character info, maps, etc are welcome.

I think that makes it plain for everyone.


Damien Sturdy(Posted 2004) [#53]
WOOOT! BEER!!! :D


Mmm, i think we should wait for noels final post.


BlackD(Posted 2004) [#54]
Your boss gives you beer?
GET ME A JOB THERE! :)


Damien Sturdy(Posted 2004) [#55]
I'm not at work- Im helping someone- Its actually 12.12am here now. >.<...

Just got ONE final bug before the game can be published.... ^.^ :D


BlackD(Posted 2004) [#56]
ahh the UK. :) I'm from Kircaldy but now in Sydney.. go figure. Anyway.. off to work now.. won't see the official post for 8 hours.. dammit :)


Damien Sturdy(Posted 2004) [#57]
heh, good morning/afternoon :P...

im gettin drunk on somebody's beer in the fridge now!!!

i dun get it ya know- are you half day ahead, or behind the UK?


BlackD(Posted 2004) [#58]
ahead.. quarter past 9 on sunday morn here. Only the yanks are behind the UK. :)


BlackD(Posted 2004) [#59]
hmm craig.. why must it be one .BB file? The problem I have is this..

my program will be too big to be one .BB file in Blitz3D IDE. Sure I can copy/paste it all together in notepad, but then I can't test it (or the debug functions) in Blitz before submitting..


Damien Sturdy(Posted 2004) [#60]
i agree with BlackD on this one.


BlackD(Posted 2004) [#61]
I think when I submit my entry I'll just have two versions..
1) single .bb file - untested
2) as includes


Damien Sturdy(Posted 2004) [#62]
that sounds....like... a plan. :D

yeah, maybe we should do that

But to be honest, its not very easy to cock up merging the include files- if you just copy the entire thing where youre "include" line is?


BlackD(Posted 2004) [#63]
Yeah, but if it's too big for Blitz3D IDE then the people who are meant to be evaluating it won't be able to load it unless they're using another IDE which supports bigger files or by doing a command line compile, either of which is a big hassle. So.. both versions for me. :)


Damien Sturdy(Posted 2004) [#64]
yeah. i see youre point :/

and darnit im having trouble with my AI- you know, when its so inteligent it doesnt follow your instructions? :P


BlackD(Posted 2004) [#65]
Teeheheheheeee I'm so excited about this. Can't wait to finish my game. :) Hows it going Cyg. Btw - just WHO is competing in this? So far I only know of two people. >_<

+BlackD


BlackD(Posted 2004) [#66]
and darnit im having trouble with my AI- you know, when its so inteligent it doesnt follow your instructions? :P

Ahh yeah, the old "hell no i'm not going over there, that's in direct line with player(x,y) and he'll be able to shoot me.. i'm going to stay over here and live instead.."


Damien Sturdy(Posted 2004) [#67]
going well, but i need to implement A* and i just cant get it to work!!! (its a git that i cant just wonder off to BC.com n get some routines- but thatd be cheating. hehe)

My theme is quite humerous though- a group of chavs fighting for 'shrooms ^.^ (hey, i had to come up with something with the graphics I had generated!)

And hows your entry?


BlackD(Posted 2004) [#68]
mm.. title screen is almost done..

(I wish I was joking..)

Hehe.. basically, I'm writing a few routines for use in the title screen that I'll be using in the rest of the program. So I'm working on bunches of it at once. :) Hope it all comes together at the end..

Got four .bb's so far. :) main.bb, functions.bb, routines.bb, renders.bb


Damien Sturdy(Posted 2004) [#69]
i have..
soundsystem.bb (a BBC style sound emulator v2 ive re-written for this game.. and it STILL doesnt work well)
arpegiator.bb- That arpegiates notes in the soundsystem
and game.bb- the main game.

Because ive rushed it i think ive buggered the sound system up :/ but the games working quite well. those 'shroom munchers sure do fight!


_PJ_(Posted 2004) [#70]
Aww - I wish I could find all my old speccy routines for filling areas and doing some fancy text stuff. That would be really easy to convert!

IUf I hadnt messed around and 'improved' (i.e. added external textures etc.) My BallBlazer remake, that coulda been in here :)


BlackD(Posted 2004) [#71]
A preview of a routine I did some work on in the last hour. Almost getting it right.. now just gotta draw the frame. :) Spent 5 hours programming tonight (not programming this, thank god!) so want to share something.. :) I've got over 30k of code already.. glad I'm using includes. :)

(oh yeah, and move the mouse around)

+BlackD




Damien Sturdy(Posted 2004) [#72]
Nice one, BlackD... i wish i could put all myheart into writing that many Line commands! hehehe... Looks great!


BlackD(Posted 2004) [#73]
lol.. yeah. I'm writing a text file to go with the distro. It's got under the section "the hardest bits":

"- The world map. A pencil, some graph paper with screen coordinates written down the side and along the top, a map of the world printed to a projector sheet laid over the top, and a helluva lot of typing (mainly using a multiple copy/paste applet). This took about four hours to enter in correctly. On the other hand, the tv-like screen background for that scene took 20 minutes."


Damien Sturdy(Posted 2004) [#74]
i for one, cant wait to try your entry.

il do some work on mine a bit later tonight.

Anyone like Boulderdash/Bomberman/pacman? picture them all together? hehehe >.<

Well, from the other bits of code ive seen, ive been beaten solid.. but this is still great fun! dont you think? :D