khawk

Welcome to the GameDev Challenges Forum

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 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 arkanoid or krakout (breakout with extension, items and enemies) clone in any graphics style

- Write a 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 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)

Edited by Finalspace

Share this post


Link to post
Share on other sites

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

Edited by MarcusAseth

Share this post


Link to post
Share on other sites
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.

Edited by Finalspace

Share this post


Link to post
Share on other sites

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

Edited by MarcusAseth

Share this post


Link to post
Share on other sites
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 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.

Share this post


Link to post
Share on other sites

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? :\

Edited by MarcusAseth

Share this post


Link to post
Share on other sites
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).

Edited by Finalspace

Share this post


Link to post
Share on other sites

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"
Edited by Husk

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Edited by Finalspace

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

This an awesome idea!

I have some observations about what were posted so far:

  1. The challenges that @Finalspace posted about remaking old classics is amazing.
  2. Challenges could have a format, regarding what expect of gameplay, art style and technical aspects.
  3. Regarding what @Finalspace and @Husk said. I think restricting the programming language isn't a good idea, on the other hand, I think having some challenges with "make it in any programming language and framework, but don't make in a game creation system (as Game Maker, Unity, Unreal, etc)". The reason I don't like the first restriction, but I like the second is because the second restriction (any programming language, no game creation systems) allows the developer to improve the understanding of architecture, since there won't be any creation system doing all the backend work. Also, we could learn from each other some nifty architecture tricks, that you can't when using a game creation system.
    • Tldr: no language/paradigm/framework/platform restriction, but sometimes game creation systems restriction
  4. I like the example that @Alpha_ProgDes posted.

Here's also two examples of what I'm thinking about:

First example

Quote

PACMAN Challenge!

This is the challenge description. Remember pacman?! Pacman was launched XYZ years ago. Happy birthday, pacman! Your challenge is to make a pacman clone.

Game design requirements

The game must have:

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

The gameplay must be at least like pacman, but you can make additions.

Art style

The art is limited to 8 colors, even if you make it in 3D (which you can limit using shaders or texture with no light).

Technical restrictions

  1. Write in any language and framework (your own, MonoGame, GLFW, SFML, SDL2, etc.)
  2. Don't use a game creation system

Deadline

November 30, 2017

Second example

Quote

SUPER MARIO BROS Challenge!

This is the challenge description. Your challenge is to make a mario clone!

Game design requirements

The game must have:

  • Start Screen
  • Win/Lose Screen
  • Graphics for the UI, character, items, and enemies  (ie. not just a monochrome rectangle and ball)
  • The character must have 2 states (like with Mario, when you get a mushroom, your character is big, and when hit by an enemy, the character is small)
  • 4 enemies with distinct AI
  • Scoring
  • Sound effects
  • Music
  • Exit (key and screen)

The gameplay must be at least like Super Mario Bros, but you can make additions.

Art style

  • The art must be 2D, but no color or style limitation
  • The music must change when the character is big and when is small

Technical restrictions

  • Screen must be 256 pixels in height and 180 pixels in width

Deadline

November 30, 2017

 

Edit:

added "platform" to the list of things that should not be a restriction.

Edited by felipefsdev

Share this post


Link to post
Share on other sites
1 hour ago, Alpha_ProgDes said:

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.

 

Well for starters this may already be too much? I would rather start with something really small and simple or use an iterative approach. When iterating over small things you will much often see progress - like you see in agile development all the time.

Meaning just split up the "making the game task" into multiple sub-tasks, so that you start really simple and extend as you go. But using a theme to give it more appeal is a nice idea. +1

 

 

But why powerups for a pong game? In breakout this makes much more sense and are much more fun i think, buts thats just my oppinion...

 

Edited by Finalspace

Share this post


Link to post
Share on other sites

I think @Alpha_ProgDes meant to be a template, but not the challenge itself.

I almost forgot, would be nice to encourage (not obligatory) a small post-mortem. For newbies, it would be an opportunity to hear feedback from more experienced developers, for more experienced developers, would be a nice way to share their nifty tricks with other developers.

Share this post


Link to post
Share on other sites
15 minutes ago, felipefsdev said:

This an awesome idea!

I have some observations about what were posted so far:

  1. The challenges that @Finalspace posted about remaking old classics is amazing.
  2. Challenges could have a format, regarding what expect of gameplay, art style and technical aspects.
  3. Regarding what @Finalspace and @Husk said. I think restricting the programming language isn't a good idea, on the other hand, I think having some challenges with "make it in any programming language and framework, but don't make in a game creation system (as Game Maker, Unity, Unreal, etc)". The reason I don't like the first restriction, but I like the second is because the second restriction (any programming language, no game creation systems) allows the developer to improve the understanding of architecture, since there won't be any creation system doing all the backend work. Also, we could learn from each other some nifty architecture tricks, that you can't when using a game creation system.
    • Tldr: no language/paradigm/framework restriction, but sometimes game creation systems restriction
  4. I like the example that @Alpha_ProgDes posted.

Here's also two examples of what I'm thinking about:

First example

Second example

 

1. I will try to update this when i found more, there are so good old games out there...

2. Agree

3. It should depend on the challenge, so i would not rule it out by default always. Meaning there may be challenges doing something just with C++ and SDL, but there might me as well like this: "Write it however you want". But if most are restricting to non game-creation tools, this would be a good thing: There are already million times pong/breakout/mario whatever clone for unity and unreal out there...

4. I like it partly: See previous post.

Edited by Finalspace

Share this post


Link to post
Share on other sites
10 minutes ago, Finalspace said:

Well for starters this may already be too much?

I would rather start with something really small and simple or use an iterative approach.

For complete beginners in programming, period? Absolutely. If anything they need a tutorial to be familiar with programming concepts, then game dev concepts. But for people with actual programming experience, it may be difficult, but not impossible.

How small is small? Example?

Also, to be clear, my previous post isn't meant to be THE template or even A template. It's just a starting place for discussion. The idea being that that discussion will lead to the actual template(s) we will use.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now