PDA

View Full Version : A PGD Challenge without Scoring and Judges?



WILL
04-01-2013, 12:05 PM
Hey guys, what do you all think of the idea of having a sort of Game Jam style competition for the next one? No scoring and no judges. Would you still be up for it?

It's easy enough to come up with a great theme and some decent rules. Of course hosting all the games on the showcase site takes a little bit of time to gather up screenshots and such, but the biggest "challenge" in all of these competitions is finding people out there that are able and willing to play all the games objectively and score them individually. It does take that extra bit of effort, and usually that's what delays competition start times.

So without Scoring and Judges at all, we can still have an event take place for all those that want to take on a challenge as a community. The benefit, besides the obvious learning experience of starting and completing a project, would be that you get to show off your game in our great event showcase, but without the stress of scoring, having to match up with a specific system and so on.

I would open up the competition for ALL platforms so long as it's created with a Pascal-based developer tool.

What do you guys think? Are you all really aching for a new PGD Challenge event? :)

Cybermonkey
04-01-2013, 12:59 PM
Perfectly sound! Of course my question is: is it enough that the engine is Pascal-based and the game mechanics driven by a scripting language? You know my project, it's the EGSL interpreter which is completely made with Freepascal. The game would be made with Lua, though. If this wasn't allowed on the other hand, what would happen if I'd replace Lua with Pascal Script or this one http://sourceforge.net/projects/scriptengine2/ ?

Ñuño Martínez
04-01-2013, 04:00 PM
Yes, nice. I'm in. :)

Anyway I've yet commented that some other contests ("Speed Hack", "TINS" ...) the scoring is done by the participants themselves.

Daikrys
04-01-2013, 05:06 PM
Perfectly sound! Of course my question is: is it enough that the engine is Pascal-based and the game mechanics driven by a scripting language? You know my project, it's the EGSL interpreter which is completely made with Freepascal. The game would be made with Lua, though. If this wasn't allowed on the other hand, what would happen if I'd replace Lua with Pascal Script or this one http://sourceforge.net/projects/scriptengine2/ ?

why should it be a problem? since its your project, its like using a script language inside pascal

Cybermonkey
04-01-2013, 06:02 PM
why should it be a problem? since its your project, its like using a script language inside pascal

Yes, that's my opinion, too. But maybe Jason has another view of that issue?

wodzu
04-01-2013, 07:27 PM
Eh, I would love to start in some competition but work takes also my spare time :|

WILL
04-01-2013, 07:29 PM
Hmm... interesting question, but I don't think I'd have an issue with it. If you think about it. You make a game that has it's own AI, but you don't use any kind of strict Pascal syntax for the script, it's still a Pascal-made game.

Well I don't see a major issue with it as the majority of the code is/was Pascal, but if you did want to make it more "legit" as a Pascal entry then I suppose you could switch to PascalScript. You might even have made your engine better by adding support for another script language too. :)

Since there is no scoring and judges, I'd say that it should be a bit more relaxed too as long as Pascal is used as part of the game as well.

Well that makes 3.5! :D

SilverWarior
04-01-2013, 10:49 PM
Somehow I have a feeling that I will be pasing this over. Till now I tried competing in two PGD competition and fail to finish my project even to the phase where I could show it to others (I psnd to much time on the core of the game so that I run out of time for games interface).
For me personally judging of my work isn't seemed as priority but it can be helpfull to see others opinion on my work. But since you are having problems in finding official judges why not give the comunity to be able to judge the entries by themselves. So everyone who go and tries to play the entries can also rate it. So finally you can just sum up the scores given by the comunity. As we don't have prizes I don't see any problem in that.


Some time ago I was actually thinking about some other idea which can help in the promotion of our comunity - a Programing Challenge.
The goal of a Programing Challenge isn't to make a whole game but actually just to solve certain basic problemof making a game. For instance:
How to make your game be able to have several thousands of differemnt units on the game field and theese units doesn't just have information for their position, their orientation and their health but also have other details.
As you can imagine the min problem of this is the amount of memory you would require. So goal of the challenge would actually be to find an eficient approach which would alow you to implement this in a way so that your game won't use up all the computers memory just for this.
And since different peope usually use different aproach in solving problems there is great chance that different participants would provide different solutions for this.
So in the end we could go and try to find posible benefits and drawbacks for each of presented aproaches.
In the end this could be excelent resource for other pepole to use when deciding which approach would be best for their game.
Becouse when newbie game developers starts working on their games they are usualy searching for code sapmles from similar games. But only in rare cases these code sapmles comes with the infromation about posible benefits and drawbacks of this code. So why not we be first to change this?

I know what you are probably thinking now. If someone wan't to know how some problem can be solved he can always just ask on the forum. Yes that is true. But the thing is that what he will probbably get is just one answer from first person who toks enugh time ti think about it and provide an answer.
But what I'm suggesting would actually provide more answers to single question and in the end even alow us as comunity to actually give opinion on each others answe and therefore find posible benefits and drawbacks of each o them.
And there is no rule that someone should go and ask of how something can be done. If wanted any comunity member could go and present a problem and one solution to solve that problem. So then other would go review it and provide their posible solutions to the problem. In the end it would be similar as just writing a tutorial but it is probably easire for some pepole to simply show a code example thatn write full tutorial especially if that person isn't natively Engilsh speaking.

pstudio
05-01-2013, 12:30 PM
It has been mentioned before and is related to Silverwarrior's suggestion of a programming Challenge, but I think it could be interesting with an AI challenge like the Google AI Challenge. It would require that someone would make a simple game with some interesting multiplayer challenges. Furthermore the game will need an API that can be used by various Pascal dialects.

I realize that it does require some effort from whoever must create the game, but I find the benefits interesting:

No judges will be needed. We just have to make the AIs battle each other and see who wins or gets the highest score.
The problem with unfinished entries should hopefully not be an issue. With a well designed API it should require minimal effort to make a simple working AI. It may not be any good, but it Can be submitted to the contest even if you haven't finished it.
It's a clean programming challenge. No need to fiddle with graphics and Music. No need to waste time on setting up rendering contexts, reading game assets, do proper input handling, collision handling, etc. You only have to focus on designing and implementing your AI.
Everyone can participate. No matter your skill level you can make a valid entry. Beginners may implement some ad hoc method while more experienced programmers may want to play with decision trees or even experiment with neural networks or reinforcement learning.
Lastly it is plain fun. We will be competing directly against each other and it is always fun to see how your AI compares to some other AI. It is also interesting to see if some type of AIs fare better against other types of AI but are weak against a third kind.

Personally I think this could be a great and fun challenge and the competetion length can be as long as you wish. You can get an AI running in one day but can spend a month on improving it.


btw. I'm writing this from a borriwed iPad and I am really hating the auto-correct.>:(

SilverWarior
05-01-2013, 02:08 PM
I like your idea but you do have to realize that AI development is far from easy. Sure making AI which controll simple movments is easy but if you wan't anything more than that it does becomes quite demmanding. So I'm afraid that many pepole with low programming skils would simply avoid participating in this challenge.

Anywhay do you volunteer yourself to write such a game to alow us to do this challenge?
I do have an idea of making game similar to Colobot where the goal of the game is for you to write boots AI. In Colobot you need to write boots ai using C++ so I thought of using Pascal Script for my game.
But before I can do that I still need to learn a few things about the game development before I would be able to finish any of my game ideas.

pstudio
05-01-2013, 03:15 PM
I like your idea but you do have to realize that AI development is far from easy. Sure making AI which controll simple movments is easy but if you wan't anything more than that it does becomes quite demmanding. So I'm afraid that many pepole with low programming skils would simply avoid participating in this challenge.

AI is as complicated as you make it. The game for such a challenge must be simple enough to allow for simple AIs. This is a game development forum after all. If a person can't make a simple AI, I fail to see how that person can make an entire small game in one month.


Anywhay do you volunteer yourself to write such a game to alow us to do this challenge?
I do have an idea of making game similar to Colobot where the goal of the game is for you to write boots AI. In Colobot you need to write boots ai using C++ so I thought of using Pascal Script for my game.
But before I can do that I still need to learn a few things about the game development before I would be able to finish any of my game ideas.

I may do it or at least help with creating the game and API, but like everybody else, I have other things to attend.
I'm not familiar with Colobot, but judging by the few screenshots I saw, it looks much more advanced than what would be needed for this challenge. But in general bot games have been popular for many years. There even was a bot game that used Pascal Script a few years back.
For this challenge I imagine a game similar to the Ant game for the Google AI Challenge. The biggest challenge for making the game would properly be to create an interface to allow entries made in various Pascal dialects. I would say that at least Delphi, FPC and Oxygene must be supported. One solution would be to use a client/server paradigm and use sockets for communication.

User137
05-01-2013, 05:20 PM
Simplest way to handle AI bots i have seen, is to use use writeln(), readln(). Host application starts all bots, and writes/reads to each, using those simple console commands. First communication could be from host, who could assign turn number for each bot. Bots writeln() their moves and wait for enemy moves with readln(). Host writeln()'s other bots where he moved, and so on. Point being, you don't need TCP or anything complicated.

SilverWarior
05-01-2013, 08:34 PM
I'm not familiar with Colobot, but judging by the few screenshots I saw, it looks much more advanced than what would be needed for this challenge.

Yes Colobot does have some decent looks but the main reason for this is to make it atractive for other pepole to actually use it. From waht I know Colobot was made by a higschool proffesor as a way to atract students into C++ programing. And it can be actually used even by the pepole who never had any prior programming experience. While in most cases you don't need to do any complicated AI in colobot (just MoveTo, Grab, Drop, TurnLeft, TurnRight, Shoot are enough to end most missions), but if you want you can write a preety damn compilcated AI (several bots working in groups).


There even was a bot game that used Pascal Script a few years back.

Can you please remember the name of that game. I have been searching many times to find any such game which would use Pascal language for AI development and I had no luck finding any.


The biggest challenge for making the game would properly be to create an interface to allow entries made in various Pascal dialects. I would say that at least Delphi, FPC and Oxygene must be supported. One solution would be to use a client/server paradigm and use sockets for communication.


Simplest way to handle AI bots i have seen, is to use use writeln(), readln(). Host application starts all bots, and writes/reads to each, using those simple console commands. First communication could be from host, who could assign turn number for each bot. Bots writeln() their moves and wait for enemy moves with readln(). Host writeln()'s other bots where he moved, and so on. Point being, you don't need TCP or anything complicated.

I don't think ReadLn and WriteLn would be the best choice for this. Yes they can be quickly implemented but they do pose some limitation (the amount od data it can be transmited using this approach). Lets say that you try to develop some more advanced AI that can contoll several units as a group (to cooperate). For doing this nicely you need to be able to retrive the current status for all of theese units (get information about their surroundings) at once and then send varios commands to all of theese units.

If you ask me I think it would be best to use Dynamic Link Libraries (DLLs). From what I know all of Pascal Development tools are capable of compiling Dynamic Link Librarry.
But for this to work the game itself should alow the DLL to retrieve needed information so that decisions can be processed and then returned back using some standardiesd procedure. And if you allow theese DLLs to actually be able to store some presistant data you can even write yourself procedures whoch would alow you to actually compile yourself a map so that you can coordinate your units better.

phibermon
05-01-2013, 09:38 PM
the AI you are referring to is comprised of many systems operating together, you have various path finding and steering algorithms for creating 'intelligent' movement from place to place in the environment, this usually operates as a service to higher level code such as state machines, priority lists, scripts etc

Interaction between entities happens at different levels, to calculate the path for the player to take to walk around an enemy, avoiding intersection of geometry is a lower level from game like interaction such as instructing an enemy to attack the player.

Also you'd use/have different approaches/restrictions depending on how many AI entities you plan on processing and the kind of environment that they inhabit.

IE a dynamic destructible environment requires more work for AI to manage than a static environment. Some situations allow you to cache paths across maps, others not so much.

At the highest level it's all game specific, imagine skyrim and enemy AI casting appropriate spells for the situation etc

pstudio
05-01-2013, 10:51 PM
Can you please remember the name of that game. I have been searching many times to find any such game which would use Pascal language for AI development and I had no luck finding any.

Sorry, I can't remember the name. Thinking back I Think the game used Delphi Web Script. It was a 3D game where you hd to write the AI for a fighting robot.


If you ask me I think it would be best to use Dynamic Link Libraries (DLLs). From what I know all of Pascal Development tools are capable of compiling Dynamic Link Librarry.
But for this to work the game itself should alow the DLL to retrieve needed information so that decisions can be processed and then returned back using some standardiesd procedure. And if you allow theese DLLs to actually be able to store some presistant data you can even write yourself procedures whoch would alow you to actually compile yourself a map so that you can coordinate your units better.

I'm not sure Oxygene can be compiled into linkable libraries. You would also have to make sure that there's no licitation on OS.


the AI you are referring to is comprised of many systems operating together, you have various path finding and steering algorithms for creating 'intelligent' movement from place to place in the environment, this usually operates as a service to higher level code such as state machines, priority lists, scripts etc

Interaction between entities happens at different levels, to calculate the path for the player to take to walk around an enemy, avoiding intersection of geometry is a lower level from game like interaction such as instructing an enemy to attack the player.

Also you'd use/have different approaches/restrictions depending on how many AI entities you plan on processing and the kind of environment that they inhabit.

IE a dynamic destructible environment requires more work for AI to manage than a static environment. Some situations allow you to cache paths across maps, others not so much.

At the highest level it's all game specific, imagine skyrim and enemy AI casting appropriate spells for the situation etc

If it is a game like the Ant game then yes; it is built of multiple sub systems. However the game could be anything. If it is a simple board game the fode needed to make a working AI will also be simple. I define a working AI as a program that can make a valid move each turn. It may not be a smart move but at least the game can continue running.
I will however point out that it will of course not be easy to write a really good AI. It is an AI challenge afterall.

You make some valid points that need to be considered if we were to hold an AI challenge. But do you have an overall point I'm missing? It's not clear to me if you think the AI challenge is a bad suggestion or if you're simple pointing out things that must be considered.

Anyway, the AI idea was just a suggestion. A more traditional game making contest is fine by me. Mayor we could also try a more jam like approach and lower the time the challenge will last. Maybe a week or weekend challenge?

phibermon
06-01-2013, 12:35 AM
You make some valid points that need to be considered if we were to hold an AI challenge. But do you have an overall point I'm missing? It's not clear to me if you think the AI challenge is a bad suggestion or if you're simple pointing out things that must be considered.

Only points to be considered, my overall theme is that it would be difficult to judge different examples of AI against each other due to the large number of disciplines involved.

Here's my idea for a compo :

take a simple working pascal game with available source.

People submit their own modifed/extended version of the game.

--

Would make for a tight compo with a nice even playing field.

--
A text adventure compo would be good too, just to see the range of ideas

SilverWarior
06-01-2013, 05:30 AM
What I'm saying is that while AI challenge would be nice for some of us it won't be for others. Since making of even easy AI requires good knowlege of programing and understanding how computers are processing information it would be quite hard for a newbie programers to do anything useful.
You need to understand something. The best way for us as comunity to atract new members is to organize this kind of challenges so that everyone has atleast a decent chance of sucsseding.
I myself have now been learning of pascal programing for about 10 years and I still have quite a lot of problems designing AI for one of my games (making proper decision to chose which goods to buy and where to sell them, deciding how planetary colonies eveolve, etc).

wodzu
06-01-2013, 08:28 AM
I am with @pstudio here. I even suggested the same idea in the other thread. The game really does not have to be that complicated. I remember such contest in the 8 bit Atari times.
I think the biggest problem is that someone must have to prepare the core mechanism. We could do it all togheter, we could host this project on some site and commit changes there.

User137
06-01-2013, 08:50 AM
We could do it all togheter, we could host this project on some site and commit changes there.
That is very easy with Google docs today. People can write the same file at the same time, and that's huge benefit over clumsy to setup SVN and similar. You don't need to start a real project page for it either, but share 1 folder for more people with edit rights.

WILL
07-01-2013, 01:03 AM
Well the AI bot ideas is something to consider for a future event I guess. Of course if someone wanted to co-ordinate, run and organize a separate PGD event such as an AI competition with it's own "arena" platform to run it on that could be something that could be discussed. Why not create a separate thread to see what level of interest there is? The community could support more than 1 type of event if there is enough people willing to participate.

So for a "game jam" style of challenge for the next PGD Challenge event, show of hands who would be in for that? And when is a good time?

pstudio
07-01-2013, 02:14 AM
I agree that the AI idea would be better pushed off to an other time, if we want a game challenge in the near future.If we're talking true game jam that takes place over a weekend then I'm definitely up for it.

Dan
07-01-2013, 06:14 AM
I have an idea about a separate contest we could do on pgd. some of you may have heard of igdc.ru, it's a fairly successful russian game development competition website and there is always at least one contest every month. what I could do is translate and post the next igdc competition here. when it's finished we could compare the results of both websites and if anyone makes an entry here they could participate in the voting process. how does that sound?

Ñuño Martínez
09-01-2013, 11:50 AM
Well the AI bot ideas is something to consider for a future event I guess. Of course if someone wanted to co-ordinate, run and organize a separate PGD event such as an AI competition with it's own "arena" platform to run it on that could be something that could be discussed. Why not create a separate thread to see what level of interest there is? The community could support more than 1 type of event if there is enough people willing to participate. Agree. :)


So for a "game jam" style of challenge for the next PGD Challenge event, show of hands who would be in for that? And when is a good time? My hand's up!

Can you wait until I upgrade my website? At least until I have a blog so I can use it. Two weeks. Yes, that should be enough. Thanks. :)

paul_nicholls
10-01-2013, 01:03 AM
So for a "game jam" style of challenge for the next PGD Challenge event, show of hands who would be in for that? And when is a good time?

My hand is up too! :)
Mind you, it looks like I have gotten a job (barring physio tests today, medical tests tomorrow) that I'm starting training for on Monday 14th, so we'll see!! :D

cheers,
Paul

SilverWarior
10-01-2013, 05:30 AM
@Paul_nicholls
Best of luck in getting your job.

paul_nicholls
10-01-2013, 07:30 AM
@Paul_nicholls
Best of luck in getting your job.

Thanks! PS. I passed the physio which was great :)

Bring on the "game jam" :)

WILL
23-07-2013, 10:31 AM
So I've started a new thread to more aggressively discuss the idea of starting a 3rd PGD Challenge "game jam". If there is enough interest I will start one soon.

Make a post here to show me you are interested: http://www.pascalgamedevelopment.com/showthread.php?23057-3rd-PGD-Challenge-Discussion

User137
26-07-2013, 11:19 AM
I was busy today looking into IO pipes, and here is a quick demo of communication with host app, and other executable. The executable is only using writeln and readln, kind of what we could use for the AI bots. The host application could even run many processes simultaneously, very likely even without threading involved. It might be that threading could break synchrony anyway, slower processes leaving behind the fast ones, if that matters.

I have another demo on the making for rock-paper-scissors, using randomizer AI, and game host application. That will have to wait a bit though.

phibermon
26-07-2013, 03:27 PM
Look up corewar if you'd like some inspiration on a simulation environment. If you can't absolutely ensure that each 'bot' would have equal execution time etc then having the bots compete one after another against some form of fixed environment would be worth considering.

Due to task schedulers in modern OSs it's not even possible to ensure that single threadded sequential execution would give equal time to each.

The corewar way is to essentially have a VM where it can ensure that the same number of instructions are run for each bot. If you write any utility functions available to the coders in the same VM then you can give a count of VM instructions for each one.

I'd reccomend using REMobjects Pascalscript, you can pry open the VM part and insert counters, break out of execution, store any internal register values etc

-----

If you're thinking much higher level then perhaps a server/client setup with a provided client framework, in a similar concept to 3rd party bots connecting to a quake server. Perhaps a maze or other such task for the bots to complete.

WILL
18-08-2013, 08:48 AM
Well we are doing our first Game Jam style Challenge now!

http://www.pascalgamedevelopment.com/content.php?377-3rd-PGD-Challenge-At-Your-Command!

Want to give it a try? :)

User137
18-08-2013, 11:29 AM
Due to task schedulers in modern OSs it's not even possible to ensure that single threadded sequential execution would give equal time to each.
This shouldn't be an issue with CPU that has 2 or more cores. We can't let bots use multithreading. And if it's an issue, we can also let them calculate things in turns.