Advertisement

Welcome to the GameDev Challenges Forum

Started by October 03, 2017 03:00 AM
62 comments, last by penguinbyebye 7 years, 1 month ago

Someone tell me if this is too cumbersome or messy.

But I figure that there will be a thread or poll of the submissions so we can vote on the Challenge of the [insert time-range here]. After that is chosen, a tag for that Challenge will be created. Everyone will then go to their respective blogs and post about their game dev experience(s). Using the tag in the thread title. Easier for searching and organizing of course. When the Challenge is over, the final product will be posted on entrant's blog and also on the Challenge Thread.

Maybe sometime in the future, this can be in the Showcase as well under Challenges (or something like that).

So if we get 2 challenges will it be one challenge the mods/staff picks and the other challenge the community picks? In short, how should we do the picking?

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

 

35 minutes ago, Alpha_ProgDes said:

Someone tell me if this is too cumbersome or messy.

But I figure that there will be a thread or poll of the submissions so we can vote on the Challenge of the [insert time-range here]. After that is chosen, a tag for that Challenge will be created. Everyone will then go to their respective blogs and post about their game dev experience(s). Using the tag in the thread title. Easier for searching and organizing of course. When the Challenge is over, the final product will be posted on entrant's blog and also on the Challenge Thread.

It's comprehensible. I wouldn't make the blog part obligatory, though, only posting on the thread as obligatory.

The [time-range] could be simply the start day of submission until the deadline. If someone makes a too simplistic game and submit right at the beginning trying to get more votes at long-term, they might fail for submitting a too simplistic game. If someone submit right at the end of the deadline, they might not get many votes, even if they submit a good game. It's a matter of manage time. Also, it's less work for the staff, since it won't be necessary to break the challenge into 2 parts (submission and voting).

35 minutes ago, Alpha_ProgDes said:

So if we get 2 challenges will it be one challenge the mods/staff picks and the other challenge the community picks? In short, how should we do the picking?

  1. Staff collects challenge proposal (theme and rules) via a Google Forms (that will be always running, so the staff doesn't need to create a new Google Forms every time): like this https://goo.gl/forms/zgzqrhFP1uSN77X42
  2. The staff checks if the theme and rules are good and viable
  3. If the theme and rules are good and viable, the proposals are added to a poll for 3 days to the community to decide. My suggestion is that only the challenge theme is added to that poll.

The reason for 3 days to vote on the theme: to keep things running and avoid stagnation

The reason for showing only the challenge theme in the poll: people will choose what looks more interesting, not by the challenge of the rules (the staff will know the rules anyway, to know that the rules are viable).

Advertisement

I don't have a blog and would prefer to keep things this way, so I do hope that wouldn't become a requirement ^_^'

58 minutes ago, MarcusAseth said:

I don't have a blog and would prefer to keep things this way, so I do hope that wouldn't become a requirement ^_^'

You don't have a GDN blog?

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

 

56 minutes ago, Alpha_ProgDes said:

You don't have a GDN blog?

not that I know of :D

 

16 hours ago, Alpha_ProgDes said:

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.

Not for beginners only, it depends how advanced the people are. For example some might be really good at writing software in general, but have trouble writing games - just because they think in a total different way. A classic example is people which know how to get input, make a game loop, draw something on the screen, can solve collisions but have trouble to fit everything together. Others have no idea how to start at all. Some write simple games in no-time...

So the process of making one may be broken up in small pieces - making a guideline you can follow.

To give an very detailed example which may be one of the first challenge?:

Spoiler

Challenge:

Make a arkanoid or krakout game with all core features from the original game from ~80,
including a similar art-style and game mechanics,
but playable on any PC in a modern environment (720p/1080p with 32 bit colors).

Tasks:

1.) Window and game loop

Create a window and render it black colored for every 1/60 of a second in fixed size of 1280x720.
Ensure that it updates at max 60 times per second. Prepare for detecting keyboard and gamepad input.

* Tip: Render random pixels for every frame, so you can test it properly.
* Tip: Printing out the actual frame time helps as well

2.) Paddle

Render a paddle rectangle with one color on the bottom of the screen.
Detect horizontal input and move the player around with Left/Right keyboard or gamepad digital pad in the x-direction only - with no drag or friction.
Speed should be similar to the original. The movement should be frame rate independent.
Limit the player x-movement to never leave the left or right side of the screen.

3.) Ball

Render a quad with one color in the middle of the screen and move it at start direction of 45 degrees on every frame.
Detect collisions for all 4 sides of the screen and reflect the movement when it collides and let it bounce off in a correct physical way.
Pause the movement of the ball and lock the position above the paddle but ensures that it moves in x-direction when the paddle moves like glueing the ball on the paddle.
Unglue the ball when hitting the space key and shot it in either 45 or 125 degrees.
Detect collision when ball hits the bottom of the screen and pause/glue it back to the paddle - without bouncing it back.

4.) Paddle vs Ball

Detect collisions for ball and paddle and reflect the ball when it collides without the ball getting stuck.
Add spin to make y-collisions on the paddle more fun by including the x-speed of the paddle in the new reflecting ball direction/speed.

* Tip: Use a sliding scale to modify the X speed depending on the location on the paddle.

5.) Bricks

Render 13x6 bricks in a table style on the top of the screen, each row with a different color.
Detect collisions for each brick and the ball and reflect the ball movement when it hits a brick.
Destroy bricks when it gets hit and count it.

6.) Lifes and Score

Setup a some lifes starting with 3 and a score starting at zero and render both as text in the top left and top right corners.
When a brick gets destroyed increase the score by 1.
When the ball collides with the bottom screen decrease one life and reset the entire game when this reaches zero.
Keep a time when the last brick was hit, so you can increase the score when it hits another brick in less than some millisecond amount (250 ms).

7.) Sprites and animation

Instead of simple colors, make and draw sprites for the paddle, the ball and the bricks as well.
Render the side and top bars and draw a background behind the entire screen.
Setup a way to optionally animate sprites.
Make it as close as possible to the original art.

8.) Different brick types

Watch the original game and implement all brick types (i am too lazy to look them up right now).
Some may require different sprites, like the harder ones change appeareance.
Setup your initial level to contain all the brick types, so you can test it properly.

9.) Power ups

Watch the original game and implement some power ups: Up/Downgrade of speed/size + Multiball + Autoglue etc..
Setup your initial level to contain all the power ups behind certain bricks, so you can test it properly.
Keep in mind that the speed of the ball/paddle must be clamped to a max/min range!

10.) Enemies

Watch the original game and implement some enemies spawned randomly.
Limit the enemies to at max 5. Dont spawn enemies too often.

* Tip: Use time and total number of destroyed bricks to decide when new enemies gets spawned.

11.) Make 5 levels and add level transition

Create at least 5 different levels with increasing difficulty.
When a level has been completed (All bricks gots destroyed and player is still alive) then start the next level immediatly.

* Tip: You can store the levels in a textfile so that you can make one easiely - without need to modify the actual code.

12.) Finalize the game

Polish the game so that everything works as expected, dont crashes and can be played/compiled by everyone.

If needed provide a make documentation when the dependencies/libraries are not included.

Rules:

- Write in C++
- Use any libraries but no engines
- Include the full source

Time frame:

 

The challenge starts at 2017-11-01 and ends at end 2017-11-30.
All submissions in this time frame are being reviewed and get achievements.

Additional achievements (Not sure about this...):

- Add sound and music to the game
- Add a title/menu screen so that you can start/exit the game and load levels
- Write an integrated level editor and store each level into a textfile in the users home game directory

- Add the ability to toggle window and fullscreen mode
- Make the input system rock solid, so that you can plug/unplug controllers and the game still works.

- Add a quake like console to load a level, setup certain properties like ball/paddle speed/size, push a powerup to the player, etc.


* Boilerplate tasks may not be needed and can be provided as a opensource template.

 

What do you think?

Advertisement

Making a game like this wouldn't be a bad challenge sometime down the line.

 

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

 

18 hours ago, ferreiradaselva said:

because that thread will be used for voting

Maybe I missed this part, but are these supposed to be competitions?  There are already lots of competitions.  I'm not sure that picking "winners" is a good idea if the goal is to use this as a way to provide feedback for people trying to learn.

If you complete the challenge, you're a winner. Other than that I agree with you @trjh2k2.

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

 

There will be no good/bad judgements. Either you finished the challenge or not. Its not a competition!

But there may be optional achievements you can get - to motivate people for adding improvements.

This topic is closed to new replies.

Advertisement