November 2017 GameDev Challenge: Pong!

Recommended Posts

Pong Challenge!

Make a single player Pong, with a twist. 

Horizontal rectangle video game screenshot that is a representation of a game of table tennis.

 

Game Requirements

  • The game must have:
    • Start screen
    • Key to return to the start screen
    • Score system
    • AI Player
    • Graphics at least for the UI and players
    • Sound effects for ball and paddle and when a player scores
    • A unique gameplay element that makes your Pong game stand out from others
  • The actual gameplay must happen on a single screen (no camera translation)

Art Requirements

  • The game must be 2D
  • The art must be your own

Duration

4 weeks - November 1, 2017 to November 30, 2017

Submission

Post on this thread your entries:

  • Link to the executable (specifying the platform)
  • Screenshots: if the screenshots are too big, post just a few, if they are small, you can post more, just don't take the entire space
  • A small post-mortem in a GameDev.net Blog, with a link posted in this thread, is encouraged, where you can share what went right, what went wrong, or just share a nifty trick
  • Source-code link is encouraged

Share this post


Link to post
Share on other sites

I may do something for this...trying to make something unique with pong will make me think some though.  Maybe some combination from some other random game would do it(like I saw Tetris combined with a snake game or something).

Share this post


Link to post
Share on other sites

For future reference, am I able to program something for these challenges in html and java-script?

[ edit ] after reading up more on these challenges I think I can answer my own question.  Perhaps if any game-engine is allowed for a particular challenge then someone could?  I'm not sure, slippery slop.

 

Edited by Awoken

Share this post


Link to post
Share on other sites
3 hours ago, Awoken said:

For future reference, am I able to program something for these challenges in html and java-script?

[ edit ] after reading up more on these challenges I think I can answer my own question.  Perhaps if any game-engine is allowed for a particular challenge then someone could?  I'm not sure, slippery slop.

 

You can always do the challenges months/years later, but you wont get any rewards (trophies etc.). Regarding the second question: It depends how to challenge is limited. If a challenge is limited to C++ only - which the one from oct. and nov. isnt´t you can write it in every engine/framework/language you want. But to be clearly sure, you have to read the challenge requirements - for example, some require special art.

Share this post


Link to post
Share on other sites

Here is my submission for the challenge.

Sadly I don't have the time to work on it again before the end of the month, and the AI is stupid to say the least.
The twist is pretty straightforward, the arena is round instead of rectangular.

When a player hits the ball it changes its color. When the ball is red if it exit the arena the point will go to the red paddle. Viceversa when it's blue the point will go to the blue paddle.
The two paddles can also overlap and both hit the ball. When this happens and the ball exit the arena a point will be subtracted to both player.

Here's the blog post:

I hope you like it :)

Code reviews are really appreciated!

Round Pong.zip

Solution.zip

Immagine.png

Edited by reders
Added blog post link

Share this post


Link to post
Share on other sites

Hi again! I think I've finished the game. In the end, I avoided randomizing the ball angles to make the game more predictable (and tactical), but I did implement a new AI (which makes playing alone super-cool now!). If you tried the game but got bored because of the easy AI, feel free to try again! You can get the game in this page, and check out the source code here.

I'll let you know when I finish the post-mortem. Regards!

Please find the game's post-mortem here: https://racso.itch.io/power-word-pong/devlog/16651/post-mortem

GIF2.gif

Edited by racsoth

Share this post


Link to post
Share on other sites
12 minutes ago, francoisdiy said:

why not something like Contra

The challenges are intended to be approachable for beginner to intermediate developers who may struggle to make such a game in the timeframe.

Share this post


Link to post
Share on other sites
On 27/11/2017 at 2:53 PM, reders said:

Here is my submission for the challenge.

Nice!

I have a comment: the game is too fast in my computer. I don't know if you designed it that way, or if it's running faster in my computer than in yours because the game is framerate-dependent. In case you don't know the term: it means that if the game runs at a higher framerate in my computer because my computer has better hardware, then everything will move faster, too (because, for example, you move the paddle "one unit per frame", so if there are more frames per seconds, it'll move more units per second). I couldn't find a good tutorial or explanation on the topic, sadly. The closest I found was this: https://www.scirra.com/tutorials/67/delta-time-and-framerate-independence.

If you actually wanted your game to be blazing fast, then ignore everything I just said! :P

Share this post


Link to post
Share on other sites
10 hours ago, racsoth said:

Nice!

I have a comment: the game is too fast in my computer. I don't know if you designed it that way, or if it's running faster in my computer than in yours because the game is framerate-dependent. In case you don't know the term: it means that if the game runs at a higher framerate in my computer because my computer has better hardware, then everything will move faster, too (because, for example, you move the paddle "one unit per frame", so if there are more frames per seconds, it'll move more units per second). I couldn't find a good tutorial or explanation on the topic, sadly. The closest I found was this: https://www.scirra.com/tutorials/67/delta-time-and-framerate-independence.

If you actually wanted your game to be blazing fast, then ignore everything I just said!

Ops. My mistake.

SFML has a frame rate limiter pretty unstable so I simply activated the VSync to avoid getting crazy with clocks. I wasn't thinking about monitor with higher refresh rate than 60 FPS.

I'll fix it as soon as I have time ;)

Thank you for pointing that out to me

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


  • Forum Statistics

    • Total Topics
      628710
    • Total Posts
      2984334
  • Similar Content

    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064

      View full story
    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064
    • By Dafu
      Hello all,
      I've been hard at work on a new retro pixel-perfect framework called FES Retro Game Framework. It is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      My own game I started working on using FES, a roguelike, very early: https://simmer.io/@Dafu/merl
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064
       
       
    • By ORmorni
      I am working on a multiplayer Android game using OpenGL ES in Android Studio. The game is planned as a 2d top-down shooter, in which the players survive while defeating waves of enemies. Coordination between the players is required to defeat the enemies, due to the enemy design - for an example, some enemies can be seen only by the player they target, and must be killed by others.
      I have already implemented basic menus and mechanics for the game, and am currently searching for a 2d artist to create graphics for the game.
      I can be contacted at ron_solan@walla.com
    • By alex1997
      I'm looking to render multiple objects (rectangles) with different shaders. So far I've managed to render one rectangle made out of 2 triangles and apply shader to it, but when it comes to render another I get stucked. Searched for documentations or stuffs that could help me, but everything shows how to render only 1 object. Any tips or help is highly appreciated, thanks!
      Here's my code for rendering one object with shader!
       
      #define GLEW_STATIC #include <stdio.h> #include <GL/glew.h> #include <GLFW/glfw3.h> #include "window.h" #define GLSL(src) "#version 330 core\n" #src // #define ASSERT(expression, msg) if(expression) {fprintf(stderr, "Error on line %d: %s\n", __LINE__, msg);return -1;} int main() { // Init GLFW if (glfwInit() != GL_TRUE) { std::cerr << "Failed to initialize GLFW\n" << std::endl; exit(EXIT_FAILURE); } // Create a rendering window with OpenGL 3.2 context glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); // assing window pointer GLFWwindow *window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL); glfwMakeContextCurrent(window); // Init GLEW glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { std::cerr << "Failed to initialize GLEW\n" << std::endl; exit(EXIT_FAILURE); } // ----------------------------- RESOURCES ----------------------------- // // create gl data const GLfloat positions[8] = { -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f, }; const GLuint elements[6] = { 0, 1, 2, 2, 3, 0 }; // Create Vertex Array Object GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao); // Create a Vertex Buffer Object and copy the vertex data to it GLuint vbo; glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(positions), positions, GL_STATIC_DRAW); // Specify the layout of the vertex data glEnableVertexAttribArray(0); // layout(location = 0) glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); // Create a Elements Buffer Object and copy the elements data to it GLuint ebo; glGenBuffers(1, &ebo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW); // Create and compile the vertex shader const GLchar *vertexSource = GLSL( layout(location = 0) in vec2 position; void main() { gl_Position = vec4(position, 0.0, 1.0); } ); GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexSource, NULL); glCompileShader(vertexShader); // Create and compile the fragment shader const char* fragmentSource = GLSL( out vec4 gl_FragColor; uniform vec2 u_resolution; void main() { vec2 pos = gl_FragCoord.xy / u_resolution; gl_FragColor = vec4(1.0); } ); GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentSource, NULL); glCompileShader(fragmentShader); // Link the vertex and fragment shader into a shader program GLuint shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); // get uniform's id by name and set value GLint uRes = glGetUniformLocation(shaderProgram, "u_Resolution"); glUniform2f(uRes, 800.0f, 600.0f); // ---------------------------- RENDERING ------------------------------ // while(!glfwWindowShouldClose(window)) { // Clear the screen to black glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.0f, 0.5f, 1.0f, 1.0f); // Draw a rectangle made of 2 triangles -> 6 vertices glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, NULL); // Swap buffers and poll window events glfwSwapBuffers(window); glfwPollEvents(); } // ---------------------------- CLEARING ------------------------------ // // Delete allocated resources glDeleteProgram(shaderProgram); glDeleteShader(fragmentShader); glDeleteShader(vertexShader); glDeleteBuffers(1, &vbo); glDeleteVertexArrays(1, &vao); return 0; }  
  • Popular Now