Allegro.cc - Online Community

Allegro.cc Forums » Off-Topic Ordeals » Any interest in a 'ray casting' competition?

This thread is locked; no one can reply to it. rss feed Print
Any interest in a 'ray casting' competition?
aybabtu
Member #2,891
November 2002

Alright! My first competition!

Trezker said:

aybabtu, try to learn this before the compo.
I really shouldn't take long. I thought it was pretty easy.

Thanks for the link...I have been there (and have that page saved on my hard drive). I get the concept...but I'm just having a slightly hard time getting it all straight in my head and ready to code. I'm sure it will come, though...many things I've found "impossible" in the past now seem quite easy. Maybe a competition will be a catalyst for my pathfinding knowledge...or maybe not. Maybe I can come up with a way that I don't need pathfinding (probably not, but we'll see).

It will be fun anyway!

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

In that case some other limitation may be necessary or we'll potentially be arguing about voxel heightfields and having people enter Commanche style games.

And what's wrong about this? IMHO it would only add some variety to the entries. :)

When it comes to art, FreeDoom may be quite good source (basically, they are going to make completely free contents for GPL'ed Doom). :)
http://freedoom.sourceforge.net/status.php

nonnus29
Member #2,606
August 2002
avatar

I also don't see a problem with voxel engines. In doors only works okay for me though. I'd like to do something third-person, so please don't require first person!

Thomas Harte
Member #33
April 2000
avatar

Quote:

And what's wrong about this?

Simply that a voxel heightfield (the specific example we're discussing) can be reached purely through linear algebra without any notion of ray casting by anybody who has ever written a polygon filler. Yet the expression in code will be much the same as if you reached it through a ray casting algorithm. Difficult questions of what constitutes the algorithm in use arise and the competition starts to look like a bit of a joke.

This is something that requires some thought. Or possibly it doesn't really matter what with there being no prize or other incentive to 'cheat' or otherwise deliberately enter in bad faith.

aybabtu
Member #2,891
November 2002

Voxel heightmaps are cool...8-)...and can be achieved using raycasting techniques, so definitely should be at least considered for entry.

Quote:

When it comes to art, FreeDoom may be quite good source

Wow! That's a bunch of free textures! Bookmarked
Definitely looks like a very good source for the compo art.

Thomas Harte
Member #33
April 2000
avatar

I am now accumulating details of this competition to the Pixelate wiki: http://pixwiki.bafsoft.com/wiki/index.php/RayCastingCompetition. Hopefully this is not an inappropriate use of their servers!

Check there for all competition developments and facts, and please add your name to the list of competitors if appropriate!

aybabtu
Member #2,891
November 2002

I added myself to the list...

Although...I feel I must protest the 640x480 limit...or is it for compatibility? Is 320x200 (or 320x240), 8-bit or otherwise, unsupported on modern video cards? My nVIDIA GeForce 2 (I know...modern! ;):P) supports it fine...
If it has to be limited to 640x480 for reasons other than appearance, then so be it...but otherwise I think this is a little "unfair"...

I mean, look at good old wolfenstein 3d! There's a nice low res (think it's 320x200)...and Doom (even though it's not raycasting) was 320x200...

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Well, it has to run at 640x480, but nobody have said at what frame rate. ;)

Thomas Harte
Member #33
April 2000
avatar

Quote:

Well, it has to run at 640x480, but nobody have said at what frame rate.

So it's really a matter of trying to reach a framerate you think will win you sufficient votes...

Quote:

Although...I feel I must protest the 640x480 limit...or is it for compatibility?

Yes - it's the lowest that many laptops can display fullscreen. Most will switch to a 320x240/200 display and only use a quarter of the display but mine being an Apple, it doesn't even pretend to support 320x240 mode and Allegro always fails when trying to set that as a fullscreen display. That said, the Apple version of Wolfenstein 3d was in 640x480 as were most other Mac games of the time so there isn't the need to support even for legacy reasons.

In the PC realm, Duke Nukem 3d had full SVGA support.

Anyway, I think it's pretty explicit that 640x480 must simply be one of the list of allowed resolutions and therefore can be the top resolution if you like. I guess I should also revive the idea of source releases being restricted to the judges. That way it is possible to write code for 640x480 for the competition then only do a 320x200 release for the public if you want.

Tobi Vollebregt
Member #1,031
March 2001

Quote:

So it's really a matter of trying to reach a framerate you think will win you sufficient votes...

So, is AllegroGL allowed? It would give a speed boost probably if you do only the raycasting on CPU, and leave the horizontal/vertical line fillers to the GPU.

________________________________________
website || Zipfile reader @ Allegro Wiki || Download zipfile reader

Fladimir da Gorf
Member #1,565
October 2001
avatar

Quote:

Quote:
By the way, is it legal that you use raycasting to calculations, but that you use hardware routines to render the image?

100% legal. Just make an effort to be platform neutral if possible. Or I won't be able to play!

Seems that it is. Otherwise, I couldn't participate ;) Or maybe I could, but the graphics quality would suffer too much.

OpenLayer has reached a random SVN version number ;) | Online manual | Installation video!| MSVC projects now possible with cmake | Now alvailable as a Dev-C++ Devpack! (Thanks to Kotori)

Darth Code
Member #5,728
April 2005

Just making sure:
It is ok to start programming now, to be in the "time frame" of the contest?

Thomas Harte
Member #33
April 2000
avatar

I've decided to implement a new system to determine what is a valid entry and what isn't. The system is that if any judge thinks an entry does not meet the competition criteria during judging then he indicates as such. If any entry obtains such indications from at least half of the judges then it is disqualified.

The advantage to this system is that I don't somehow gain greater authority over the meaning of ray casting just because I happen to have started the competition. The disadvantage is lack of certainty - how exactly can a potential entrant be certain that a complicated idea they want to implement will be accepted?

Given the nature of the competition and the fact that what is or isn't a ray caster is considered obvious by most people I think the advantage outweighs the disadvantage. But I'll pay attention to any comments people have on this idea.

Quote:

It is ok to start programming now, to be in the "time frame" of the contest?

Yes it is, although you will be inelligible for the category related to those programmed entirely within the given time frame. Also, I am strongly bending in favour of a rule imposing a 25% mark down for all entries started before the competition in any categories that could be called purely implementational. For example, I am considering a 'neatest code' category since we are running a programming competition and source distribution amongst judges is obligatory.

Any such categories will be clearly flagged up as such. None of these categories have yet been added to the competition. I remain mindful that nobody wants a category overflow so quite possibly none will.

In addition, what do people think of trying to get a few Allegro.cc luminaries on board as judges without requiring them to be entrants or else running a parallel poll for the 'popular vote' in each category or a subset of them? We could possibly persuade Matthew to run it using the existing Allegro.cc voting architecture?

Darth Code
Member #5,728
April 2005

Just tell me when to start and I will. I want to code the RayCaster in the contest time only.

It has to be OpenSource? Or only for the Judges? I would rather not share my code, although if I have to I will. I understand the reason for Linux, but if I compile for Windows, I think it should work with Wine, but I don't know about MacOSX...

I like the Idea of the current Allegro.cc type judging.

Still working on the Website... I will let you all know if and when it works... If it does not, I could host it somewhere else for the momment... Assuming that it is still wanted... It could host upcoming contest too...

Thomas Harte
Member #33
April 2000
avatar

Quote:

It has to be OpenSource? Or only for the Judges?

Only for the judges, which is intended to ensure that everyone can play. Since there are only 7 entrants (so far - let's all keep mentioning the competition as widely as possible) I suppose we could instead all state the platforms for which we will require support in order to be able to allocate any points to your entry.

If, for example, it turns out I'm the only awkward one on Mac OS X then you'll be free not to distribute the source at all and in the absense of an OS X build simply get no points from me. Or you can chose to send only me the source code if you trust me enough!

I think this is best dealt with by simply stating that a judge is entitled to award 0 points to any entry he cannot run and is not required to go to any great effort to make things work. This also acts to inhibit eliminates buggy entries or entries aimed at impossibly great hardware targets.

As concerns the programming time limits, the reason for the demarcation between those created 'in time' and 'out of time' is meant to reward those who really enter into the spirit of the competition without barring those with existing work. It would be silly and against the community spirit to bar the competition to those who have some code they can dust off but are unwilling to rewrite it all just to meet the competition requirements.

Since the idea of a restriction on plot lines has been scrapped this has become substantially harder to do. How would people feel about placing a time limit on some categories ("best engine created in under a month", "best engine created within 24 hours", etc) and a deadline so that judging is effective but not explicitly starting the competition at any point? This is perhaps pandering a little too far to my natural anti-strict tendencies and moves the competition into the realm of a nonsense but given how heavily trailed it is and the fact that we'll all just be relying on trust anyway perhaps isn't so bad an idea?

It'd certainly mean that people like me could, for example, spend the best part of a month or so putting together the 'ideal' ray casting engine with all the fancy features I can think of and then also try and hack together a separate Wolfenstein clone block based thing in 24 hours so as to enter twice in different categories. There would probably have to be a source requirement for double entrants unless they could come up with some other substantial evidence that they hadn't just duplicated code.

As always, I'm open to suggestions and comments!

Darth Code
Member #5,728
April 2005

I think one entry per person.

I like the idea of a "best in a month", but "best in Contest time" is best.

Here's what I think:

Linux/Unix:
Required: Shared Source, any license
Contests: Best in Contest time, Nicest Code ( neatness ),Best Engine ( this includes: Fastest, Most Upgradeable... )

Win XX (95,98,2K,ME,XP...):
Required: Runs as an .EXE
Contests: Best in Contest time, Best Engine, Smallest working Exe ;D

MacOSX:
Required: Same as Linux OR Same as Win XX ( MACOSXs executible format...)
Contests: Best in Contest time, Best Engine, Smallest working Exe

Any other OSes must be agree to one of those...
If Entry Does not work on a Judge's Computer, then that Entry will NOT get a vote from that Judge ( Insentive ) .

Just a thought...

Thomas Harte
Member #33
April 2000
avatar

Okay, contest time is probably going to be some ridiculous long length like 2 months, allowing for the fact that most people have exams coming up. I'd say make the official period begin at the start of June and end at the end of July? That gives us, more or less, a month to find and consolidate art resources, etc.

Personally I'm enjoying what are best described for the international audience as bar finals, so perhaps I'm thinking too lengthily in terms of deadlines as my spare time is approaching zero.

Quote:

Here's what I think:

...

Naturally I don't think that we should tell Windows users they can't submit in code format, but I don't think that is what you're suggesting! So, the rule is "in a form that the judge can use without undue effort, or else expect 0 points".

Once everything is finalised I'll deal with the proper collection and distribution of machine specs and varieties, etc, shortly before the start of the competition.

I suppose I'll also need people to indicate whether they have AllegroGL or not for those of us that overwhelmingly intend to just distribute source and forget about it.

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

I think this is best dealt with by simply stating that a judge is entitled to award 0 points to any entry he cannot run and is not required to go to any great effort to make things work.

IMHO better is to entitle judges that can't run an entry to just not judge it. Any entry have to work at least on 50% judges' computers to be considered valid entry. Scores given by judges are averaged to make result independent of how many judges got the entry to work as long as it's more than 50%. This way it will be more 'write great raycaster' contest instead of 'achieve greatest portability' one. :)

To get nice visuals (normalmapping and stuff) one probably will have to use inline assembly, like MMX optimizations, which probably won't run on some platforms (MAC?) and will limit compiler portability for sure (I'm using VC++, so my inline asm simply won't compile with GCC).

Quote:

Contests: Best in Contest time, Best Engine, Smallest working Exe ;D

I understand, that all uses not system native DLLs are forbidden, right? (like allegXX.dll, fmod.dll, bass.dll, etc) Anyway, it probably isn't too hard to write raycaster in <3k EXE, so 'best game in <XXk' could be better category. :)

btw. As far as I understand, we aren't forced to use Allegro library (rules doesn't state it anywhere), right? Cool. 8)

nonnus29
Member #2,606
August 2002
avatar

First of june to the end of july works for me.

Quote:

btw. As far as I understand, we aren't forced to use Allegro library (rules doesn't state it anywhere), right? Cool. 8)

Language wasn't specified either; Java is my weapon of choice...

Thomas Harte
Member #33
April 2000
avatar

Quote:

Any entry have to work at least on 50% judges' computers to be considered valid entry.

We'll make it a requirement that programs work on all judges machines and this requirement is subsumed into and identically preserved by the general rules for competition compliance stated above, i.e.

"The system is that if any judge thinks an entry does not meet the competition criteria during judging then he indicates as such. If any entry obtains such indications from at least half of the judges then it is disqualified."

Quote:

btw. As far as I understand, we aren't forced to use Allegro library (rules doesn't state it anywhere), right? Cool. 8)

The Pixelate wiki entry starts "The Allegro Ray Casting Competition". Allegro, unfortunately, needs to remain a requirement or else the bountiful resources of the Allegro community (these forums, Pixelate wiki, any assistance that we might be able to get from Matthew should I make a proper request) stop being available.

Quote:

Language wasn't specified either; Java is my weapon of choice...

It's true that there is presently no language specification. I can't imagine why there might be one but for the record no rules are set in stone until the competition starts.

I have no idea how distributing Allegro linked java programs works (does the .jar just include all library code?) but it sounds like a good way to bridge the OS gap. I personally have an OS with very tightly integrated Java support...

Might have to be careful with more esoteric languages though if you plan to distribute by source - "[judges are] not required to go to any great effort to make things work"

aybabtu
Member #2,891
November 2002

I just got my raycaster to run in 640x480 mode, to make sure I could still enter! 8-)
But, I found that drawing 640 scaled wall slices at twice the size they were before using 23yrold3yrold's DrawSlice() function (from the old raycasting threads) was very slow...I lost half my fps (60+ down to 30-ish, and standing right up to a wall didn't affect my framerate before, but now takes it down to the 15-25 range of fps!)
23's scaling function was pretty decently fast, but not fast enough for these massive purposes.

I like the idea of a hardware scaling routine, but I of course have no idea how to do that. Does allegro's stretch_blit use hardware scaling? Probably not...it's just I know for a fact that 23's does not.

Maybe on your guys's 3gazillion GHz macines this isn't a problem, but I'm developing with only 300mhz at my disposal. If we can't find a faster scaling method, I probably will have to drop from the comp...:'( Maybe not, though, but we'll see.

Also:

Quote:

I understand, that all uses not system native DLLs are forbidden, right? (like allegXX.dll, fmod.dll, bass.dll, etc)

Will we be giving source code to the judges...or binaries? And what version of allegro will be used? I don't know if it matters anymore, but when I moved from Allegro 3.11 to Allegro 4.0.3, I had to go through and change some code. Probably doesn't matter anymore, though. :-X

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

We'll make it a requirement that programs work on all judges machines and this requirement is subsumed into and identically preserved by the general rules for competition compliance stated above, i.e.

So it's going to be 'most portable raycaster' compo instead of 'best raycaster' compo? If yes, then I quit. :P Usually games can have their requirements and mine probably will have something like MMX 1GHz, which also means that you won't be able to compile it on anything else than VC++ because of inline assembly. I'm not going to learn asm syntax for gcc and alternative non-MMX renderer is simply pointless - it will be much slower for sure, look worse and will have, in fact, higher requirements. Well, if it's going to be portability compo, then I guess there is no point for me to enter it. :P

EDIT:

Quote:

I just got my raycaster to run in 640x480 mode, to make sure I could still enter! 8)

You can just stretch_blit 320x200 to 640x400 and use remaining 80 lines for player stats. ;)

EDIT2:

Quote:

I understand, that all uses not system native DLLs are forbidden, right? (like allegXX.dll, fmod.dll, bass.dll, etc)

I meant exe-size compos only. If you are going to make small executable (line 32k or 4k) and be proud of it, don't use any non-system DLLs. :)

aybabtu
Member #2,891
November 2002

Quote:

You can just stretch_blit 320x200 to 640x400 and use remaining 80 lines for player stats.

Believe me, that crossed my mind, but I figured if I'm entering a competition, my raycaster should probably look as little like crap as possible ;). The 640x480 is nice, but is much too slow on my old computer.

Erkle
Member #3,493
May 2003
avatar

The slither renderer in my duke engine gets 40fps:( when next to a wall.

EDIT: Duke Nukem 3D gave me 20fps on my old Cyrix 266Mhz at 640x480

If the writing above has offended you, you've read it wrong.....fool.
And if you read that wrong it means 'All of the above is opinion and is only to be treated as such.'

Trezker
Member #1,739
December 2001
avatar

Quote:

I lost half my fps (60+ down to 30-ish

Well, that's better than me then, I loose 79% of fps. 640 fps in 320*200 to 140 fps in 640*480, both windowed.



Go to: