Game development challenges will be posted, and this forum can be used as a gathering place for developers participating in the challenges. More to come, including rules and procedures as we work with the community to figure out how best to manage these GameDev Challenges.
Awesome, thanks @khawk! @Alpha_ProgDes maybe we can have all of those "flavors", and the focus can change from challenge to challenge? Just an idea
The thing I think is important to keep in mind while designing this is the "Why" for the challenges, I personally think a part of it should be to give begginners the opportunity to see and fiddle with good code and compare their results with everyone elses, correct their mistakes and learn in the process.
The other part of it could be more advanced challenges for the Pros to have fun, though I am a begginner so I am more concerned on the begginner side of things
Anyway looking forward to see what shape the rules and challenges will take and to participate in them
Hardware / Software constraints:
- Limited to some fixed hardware constraints, like only 16 MB of ram, x86 or x64 only, etc. (Simulating a console environment)
- Limited to some fixed software constraints, like SDL2, SFML only etc.
- Limited by some time (30/60 minutes, etc.) and with recorded proof on youtube
- Limited by programming language (JavaScript, C++, Java, C#, Python, etc.)
- Limited by platform (win32, linux, unix, android)
- Limited by graphics (software, opengl, direct3D, vulkan) only
- Use fixed public domain graphics assets for game X
Programming challenges:
- Any kind of static variables or class members are disallowed
- Write in a data oriented style only
- Write in a object oriented style only
- Write a class doing something only
- Write everything from scratch without using any libraries - except C-Runtime
- Write just a api for something without any implementation
- Make certain things as fast as possible (Optimizations, SIMD, etc.)
- Make it cross platform working on win32 and linux with proper abstractions (Compiler directives in code sections are disallowed)
- Do not use any new or delete
Engines / Frameworks:
- Write clone X in unity3d
- Write clone X in unreal engine
- Write clone X in whatever engine
Game Technology:
- Write a crossplatform command based generic renderer
- Render 50000 sprites with each a different color but same or multiple textures, grid like positioned in less than 1/60 of a second
- Write a 2D/3D renderer simulating up to 100 point lights all visible in one frame in less than 1/60 of a second
- Simulate 10000 colliding/bouncing of random moving circles in less than 1/60 of a second (Appying gravity should not make it unstable)
I personally think that the "Write X game" wouldn't be a particularly good challenge type for several reasons (not saying this is the 100% truth of things, just how I personally feel about it):
1)Too broad and hard to judge and stay "on the same page". Even just with Pong begginners users would end up with 5-10 headers? and cpp files, flood the topics with it and probably noone would have the time to go trough all of it to understand how their framework is working and give feedback on it.
2)What would be the "example" way of doing it? Maybe begginner would learn from other begginner code and start doing thing just in a different and equally bad way.
--
So I think challenges should be smaller than writing a game and focused on something specific, the whole challenge should gravitate around a single concept and everyone head should be focused on it.
Example:
Let's say a Pro users provides for us the simplest barebone framework implementation of an ECS system in C++
We could make the most out of his work and make maybe 3 to 5 different challenges on top of it, one per week.
And so now the first challenge maybe could be just the creation of the timer class and game loop. Notice the benefit, keeping the focus on this single aspect is now easy for everyone to compare their work against each other, see exacly how they could have done something better and the most important thing is begginner are now able to self-evaluate their work without actually requiring some user reading all their code, because they can easily compare against each other (without getting lost on each other's framework). Had we done an entire game, they would have no idea on where to look in everyone's else code in order to compare with their, just too much stuff going on that would have prevented it.
Not only that, now a pro user at the end of the challenge could provide everyone with the state of the art implementation of the timer class, so now everyone can see the right way to do stuff and reason about where we did poorly. So this wouldn't require someone else evaluating every project, only a single class to easily enable everyone to self-evaluate.
Next challenge it would build on top of the (ECS Framework code + TimerClass code) and maybe would be the Entity class using the components, this would imply making the paddle, brick and ball because they are pretty much similar, so in this case the focus is still not too broad. Same format, with a pro user showing us at the end of the challenge the better ways to use components, having them talking to each other (or not) and so on.
And the third challenge would build again on top of this, maybe the topic would be Collision detection
I am not saying "whole game challenges" are bad, of course users have a lot to learn from it, but those are too hard to judge because of their scope, so I don't think it's particularly well fit for a challenge where the goal is to learn from each others. And, people tend to do that on their own anyway(inbetween challenges), so it would be redundant.
I personally think that the "Write X game" wouldn't be a particularly good challenge type for several reasons (not saying this is the 100% truth of things, just how I personally feel about it):
1)Too broad and hard to judge and stay "on the same page". Even just with Pong begginners users would end up with 5-10 headers? and cpp files, flood the topics with it and probably noone would have the time to go trough all of it to understand how their framework is working and give feedback on it.
2)What would be the "example" way of doing it? Maybe begginner would learn from other begginner code and start doing thing just in a different and equally bad way.
--
So I think challenges should be smaller than writing a game and focused on something specific, the whole challenge should gravitate around a single concept and everyone head should be focused on it.
Example:
Let's say a Pro users provides for us the simplest barebone framework implementation of an ECS system in C++
We could make the most out of his work and make maybe 3 to 5 different challenges on top of it, one per week.
And so now the first challenge maybe could be just the creation of the timer class and game loop. Notice the benefit, keeping the focus on this single aspect is now easy for everyone to compare their work against each other, see exacly how they could have done something better and the most important thing is begginner are now able to self-evaluate their work without actually requiring some user reading all their code, because they can easily compare against each other (without getting lost on each other's framework). Had we done an entire game, they would have no idea on where to look in everyone's else code in order to compare with their, just too much stuff going on that would have prevented it.
Not only that, now a pro user at the end of the challenge could provide everyone with the state of the art implementation of the timer class, so now everyone can see the right way to do stuff and reason about where we did poorly. So this wouldn't require someone else evaluating every project, only a single class to easily enable everyone to self-evaluate.
Next challenge it would build on top of the (ECS Framework code + TimerClass code) and maybe would be the Entity class using the components, this would imply making the paddle, brick and ball because they are pretty much similar, so in this case the focus is still not too broad. Same format, with a pro user showing us at the end of the challenge the better ways to use components, having them talking to each other (or not) and so on.
And the third challenge would build again on top of this, maybe the topic would be Collision detection
I am not saying "whole game challenges" are bad, of course users have a lot to learn from it, but those are too hard to judge because of their scope, so I don't think it's particularly well fit for a challenge where the goal is to learn from each others. And, people tend to do that on their own anyway(inbetween challenges), so it would be redundant.
Only my personal opinion
Challenges should always have a limited boundary and can be finished in a fixed amount of time. Also everyone should have the same environment, so that you can compare the actual details.
And yes some challenges require some sort of starting framework - which is the limited boundary i am talking about.
Also a challenge should be clear and well explained, so write a "pong clone" is not sufficient enough. It should be totally clear what the tasks are and contain room of extensions only if needed.
Thinking to what I wrote above I realized one thing, we need 2 types of challenges (imho).
--The "Make X game" should be a everlasting challenge with NO DEADLINE. Anyone can jump into it and do it when he/she feels like.
--The "Focused Challenges" I talked about above should be like the weekly or monthly event with a deadline.
Now the logical question is, if this was the case why one would have to bother and "go complete the make x game challenge"?! Answer is, Achievments! Imagine if you could have a "badges" page with a nice special badge different for every game you complete, one would be kind of tempted to do it and just be able to show off on the forum, with all his badges
On the other hand the recurring challenges (weekly or monthly) should either provide a generic badge of participation (not unique as for the complete games) that keeps counting up, and possibly a special "best implementation" badge for the users who excell at a particular challenge.
Now to answer the question "how would one prove he actually made the game, in order to get the badge?!"
That's a tricky one, I would say honesty mixed with a link to a short video like
Thinking to what I wrote above I realized one thing, we need 2 types of challenges.
The "Make X game" should be a everlasting challenge with NO DEADLINE
The "Focused Challenges" I talked about above should be like the weekly or monthly event with a deadline.
Now the logical question is, if this was the case why one would have to bother and "go complete the make x game challenge"?! Answer is, Achievments! Imagine if you could have a "badges" page with a nice special badge different for every game you complete, one would be kind of tempted to do it and just be able to show off on the forum, with all his badges
On the other hand the recurring challenges (weekly or monthly) should either provide a generic badge of participation (not unique as for the complete games) that keeps counting up, and possibly a special "best implementation" badge for the users who excell at a particular challenge.
Now to answer the question "how would one prove he actually made the game, in order to get the badge?!"
That's a tricky one, I would say honesty mixed with a link to a short video like
" rel="external">my snake attempt in unreal engine
What's staff opinion on the badge matter? I realize could be an unnecessary bother, let's say would makes thing better (imho) but is not required