Skip to main content
GameDev.net gamedev.net
📌 Pinned 🔒 Locked

Welcome to the GameDev Challenges Forum

Started by khawk Oct 3, 2017 at 3:00 AM 62 replies 197.9k views
Original Post
khawk

What is this all about?

This forum is per request from the discussion at:

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.

Admin for GameDev.net.
Alpha_ProgDes
Alpha_ProgDes

This is an awesome idea.

So here's your first challenge. Make Pong. Then make the ball change a random color everytime it hits a paddle.

So. That's not seriously the challenge. But I wonder what kinda challenges are the challenges going to be.

Gameplay changes. Code architecture. Adding certain features. Something else?

Shoutout to @MarcusAseth for the excellent idea!

Beginner in Game Development?  Read here. And read here.  
MarcusAseth
MarcusAseth

Awesome, thanks @khawk! :D
@Alpha_ProgDes maybe we can have all of those "flavors", and the focus can change from challenge to challenge? Just an idea :P
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 :D

Anyway looking forward to see what shape the rules and challenges will take and to participate in them :)

Endurion
Endurion

Oooh, interesting. Will there also be timed challenges as in "Challenge of the Week", etc?

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>
Finalspace
Finalspace

Here are some random ideas as well, just so i have a post to store my ideas which gets extended as time goes on ;-)


2D Game clones:

- Make a

" rel="external">picking sticks clone in any graphics style

- Make a pong clone with the same graphics style as the original from atari 1972

- Write a pacmac clone with the same graphics style as the original from atari 1980

- Make a

" rel="external">arkanoid or
" rel="external">krakout
(breakout with extension, items and enemies) clone in any graphics style

- Write a

" rel="external">tetris clone with the same graphics style as the original from nintendo gameboy 1989

- Write a super mario bros clone

- Write a lode runner clone

- Write a marble madness clone

- Write a

" rel="external">rtype clone


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)

MarcusAseth
MarcusAseth

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 :P

Finalspace
Finalspace
26 minutes ago, MarcusAseth said:

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.

MarcusAseth
MarcusAseth

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! xD 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 :D

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 :)

Finalspace
Finalspace
1 minute ago, MarcusAseth said:

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

Agree.

MarcusAseth
MarcusAseth

Just to add to what I said above, if there where badges, what if in order to receive one some extra steps where required?

For example, it would be required a post with a specific format (to be decided) with the name of the user, name of the game and some kind of tag to point out is a "Completed Game" post (or maybe a section for completed games)

The sample video should be on top of the page, but the user should also provide the code, and if he feels like some additional informations below the video, maybe noteworthy things about the code like which patterns he used and so on.

This way we would build a library of completed games examples and one would be able to "peek inside" the one that looks particularly interesting, sounds like a good learning opportunity :P

For instance, I would probably jump inside every project that do stuff in a ECS way, just to learn more about it :P

Do you guys think that the "show your code" requirement is too much? Maybe an optional requirement? :\

Finalspace
Finalspace
2 hours ago, MarcusAseth said:

Just to add to what I said above, if there where badges, what if in order to receive one some extra steps where required?

For example, it would be required a post with a specific format (to be decided) with the name of the user, name of the game and some kind of tag to point out is a "Completed Game" post (or maybe a section for completed games)

The sample video should be on top of the page, but the user should also provide the code, and if he feels like some additional informations below the video, maybe noteworthy things about the code like which patterns he used and so on.

This way we would build a library of completed games examples and one would be able to "peek inside" the one that looks particularly interesting, sounds like a good learning opportunity

For instance, I would probably jump inside every project that do stuff in a ECS way, just to learn more about it

Do you guys think that the "show your code" requirement is too much? Maybe an optional requirement? :\

Providing the code is depends on the type of competion. There might be some which dont need one and one which is a requirement. I would say, trophys / achivements will only be valid when the source is provided - ideally as open source (github).

Husk
Husk

I would like if challenges were a community learning experience and not a competition. Everyone should share their findings, ideas, and solutions to problems during the challenge so everyone can learn from it and become better game developers. Providing relevant learning resources at the start of a challenge would also let people get started quicker. We should also aim for having participants being able to complete their project so they can add it to their portfolio as well.

There should also always be a way for non-programmers to participate, and I'd do that by letting people work in groups. If it's not a competition then that shouldn't matter. Participation from these members should be encouraged, perhaps by ranking submissions on all of mechanics, design, sound, levels, overall, and so on. This also encourages members to do their best in any case, and even to branch out and develop secondary skills.

I'd only have one challenge at a time to reduce various problems including unbalanced participation, less learning, feeling the need to do both, and so on. However every challenge should offer new and multiple skills to learn. For example, a racing game could potentially teach vehicle physics, collisions, splines, tracking positions, etc. Then the next week could be some text adventure which teaches a whole new set of skills. It's good if skills can be revisited occasionally.

I'm not sure about requiring source code submissions as some may want to further develop and sell their creations, or not have it on their public repositories.

I would avoid challenges that are...

  • Too broad - Without a focus, there's less to be learned. It means there's no central discussion points, and people may not push themselves to learn new skills. Projects may also spend too much time on trivial stuff and we'll see less interesting content.
  • Tool constrained - We should be making games, it doesn't matter what tool is used. It will also waste time that could otherwise be used for creating interesting content for the challenge. The skills learned will apply to all tools anyway.
  • Technical - Limits on memory, performance, etc, encourage less interesting content and the learning of more useful skills. It also rules out many tools and platforms.

Some example challenges I'd consider to be good are... (shortened here to save space, can be made more specific or simpler)

  • "Create a 2D platform game where there are walking and flying enemies. Attacking or jumping on an enemy will kill them. However, platforms will be varied in shape and orientation, and players can walk around these with a local gravity. Change platforms by double jumping. - 2 weeks".
  • "Create a 2D game where you control two separated characters, both responding to the same input at the same time. You must use this to solve the puzzle of the level and bring the two characters together. - 2 weeks"
  • "Create a game of pong where the ball can be spun by hitting it with a moving paddle and this affects the way the ball travels. - 1 week"
trjh2k2
trjh2k2
5 hours ago, MarcusAseth said:

Do you guys think that the "show your code" requirement is too much? Maybe an optional requirement?

I think this is a perfectly good requirement in order to participate on the forum bits. Nothing would stop anyone from completing the challenges on their own time without submitting them for feedback, so if you don't want to share, you don't have to, you just don't get the benefit of the peer-review + feedback.

Also, I'm glad to see this moving forward instead of just being discussed. Good stuff.

khawk
7 hours ago, Finalspace said:

Question: How creates the challenges? Everyone? Mods only? Everyone but with approval of mods?

This is open, and I'm hoping it can be part of the discussion, but I lean toward a submission process for challenge ideas.

If it's open there might be a lot going at once, and I don't know that having more than one or two at a time is a good thing.

Alpha_ProgDes
Alpha_ProgDes

I agree. With the challenges there should be as few as possible. IMO, 3 (assuming they are related to the same project).

Hopefully this will increase the use of blogs... and proper tagging.

Beginner in Game Development?  Read here. And read here.  
Finalspace
Finalspace
23 minutes ago, Alpha_ProgDes said:

I agree. With the challenges there should be as few as possible. IMO, 3 (assuming they are related to the same project).

Hopefully this will increase the use of blogs... and proper tagging.

I agree.


34 minutes ago, khawk said:

This is open, and I'm hoping it can be part of the discussion, but I lean toward a submission process for challenge ideas.

If it's open there might be a lot going at once, and I don't know that having more than one or two at a time is a good thing.

Submission would be much better otherwise there will be chaos. Two things at a time should be the max.


I think this is a perfectly good requirement in order to participate on the forum bits. Nothing would stop anyone from completing the challenges on their own time without submitting them for feedback, so if you don't want to share, you don't have to, you just don't get the benefit of the peer-review + feedback.

Also, I'm glad to see this moving forward instead of just being discussed. Good stuff.

I fully agree, everyone should be able to participate even when the challenge time frame is exceeded. Sharing should be optionally as well, but its prefered to share the source.

Alpha_ProgDes
Alpha_ProgDes

Submit to the community, the mods, or both? For "both", I mean have a Challenge chosen by the Mods and a Challenge chosen by the Community.

Beginner in Game Development?  Read here. And read here.  
trjh2k2
trjh2k2

Could do a "lets choose the next/current challenge" thread, maybe.

Alpha_ProgDes
Alpha_ProgDes

This is an old challenge but you guys can tell me what you do and don't like about it. We can use the feedback to inform the future template.

Quote


The contest will be 31 days long.

The contest will focus around the game of pong/table tennis. Everyone knows how this game works so I won't go into a lengthy explanation. However, the game will have to be a complete game. This means the game must have:

  • Start Screen
  • Win/Lose Screen
  • Graphics for the background, ball, and paddles (ie. not just a monochrome rectangle and ball)
  • Scoring
  • Sound effects
  • Music
  • Exit (key and screen)

Game Rules

  • The theme for this contest is Time. So that means that your game must in some way or ways reflect the Time theme.
  • As the title indicates there will be power ups and they are mandatory. 3 powerups are mandatory. The mandatory 3 powerups will be Time based. 2 of the mandatory power-ups are: Speed Up and Speed Down. You can apply these powerups as you see fit (ex: make the paddles move faster, make the ball move faster, or make the timer move faster). Also it's totally up to you how the powerups are distributed to the players. In other words, you determine how the powerups get on the board and how the players get the powerups. The 3rd mandatory powerup must be Time-based but you can make it whatever you want.
  • Because there is scoring, there must be a score limit that determines the winner.

Options - The following are optional but will make your game more interesting.

  • Also, 2 additional, OPTIONAL powerups can be added as well. The 2 additional powerups can be anything you want them to be (ie. not does have to be Time-based) and they are optional.
  • Timer
  • Variable score limits (ex: 5, 10, 100, infinity)
  • Pause functionality
  • Difficulty settings
  • Level progression
  • Save functionality
  • Animated background
  • Different backgrounds and graphics for level progression


Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.