Jump to content

  • Log In with Google      Sign In   
  • Create Account


Wtetris: OpenGL tetris clone (for those who want/need an example).


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
9 replies to this topic

#1 Goran Milovanovic   Members   -  Reputation: 1104

Posted 06 November 2012 - 07:46 PM

I wrote this OpenGL tetris clone in C. Here's a quick video that shows the game in action:

http://www.youtube.com/watch?v=vWmDVjVb9eM

There are many tutorials that cover OpenGL and various other libraries, along with tutorials that cover the basics of C, but there are very few approachable examples of actual games that one could study.

I by no means claim that this game is ideal from that perspective, but there's not a whole lot of abstraction to wade through, and it's relatively well organized ( ... I think - Any opinions to the contrary would be welcomed, of course ).

You can get the source code here: https://github.com/GoranM/wtetris

Also, if anyone has any specific questions relating to the code, or the design choices I made, feel free to ask.

+---------------------------------------------------------------------+

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

Sponsor:

#2 3Ddreamer   Crossbones+   -  Reputation: 3133

Posted 06 November 2012 - 10:35 PM

Hi,

I like your concise video, Goran.

This is exactly the kind of creativity with simple games that we know can be done for learning. The newbies should really look into your coding because I see a bunch of good knowledge nuggets and some new things which I have yet to grasp, too. Hey! You guys have to see this!

It's also good to see the C language and SDL being used, encouraging people to not jump on the band wagon or run with the herd but other languages can be very effective!

Great stuff!

Thanks,

Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#3 ultramailman   Prime Members   -  Reputation: 1563

Posted 07 November 2012 - 07:52 PM

Hello
Nice, I downloaded it, and noticed the source code is pretty short. That makes me feel like I am doing something wrong, because my game's source is about double of yours, and it's still not finished.

A question: I am not familiar with cmake, but the source looks like c89. Why not use c99?

#4 Goran Milovanovic   Members   -  Reputation: 1104

Posted 08 November 2012 - 03:49 PM

Thanks for the kind words.

A question: I am not familiar with cmake, but the source looks like c89. Why not use c99?


I didn't really try to follow any given C standard -> The C that I wrote is simply the C that I know.

Why does it look like c89?

+---------------------------------------------------------------------+

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#5 ultramailman   Prime Members   -  Reputation: 1563

Posted 08 November 2012 - 04:24 PM

Thanks for the kind words.


A question: I am not familiar with cmake, but the source looks like c89. Why not use c99?


I didn't really try to follow any given C standard -> The C that I wrote is simply the C that I know.

Why does it look like c89?


Ah, I see. Well, it looks like c89 to me, because the variables are all declared first, before any function calls or loops. On closer inspection though, that's not always the case; there is one variable declared after a function call in label.c. Perhaps it's a msvc feature? I have no idea, only used gcc here.

#6 ultramailman   Prime Members   -  Reputation: 1563

Posted 11 November 2012 - 05:27 PM

Finally compiled it... and when I run it, bam, instant segfault :S

Edited by ultramailman, 11 November 2012 - 05:28 PM.


#7 Goran Milovanovic   Members   -  Reputation: 1104

Posted 12 November 2012 - 12:31 PM

I wrote and tested the game on Linux, using the gnu C compiler, so if you're using cmake to generate a visual studio project file, there's a possibility that something is falling through the cracks, since I didn't test that setup.

Although, it's more likely that you don't have the right relative paths in main.c, to both scene.rawd and those base shaders; the program has to be able to find and load those at runtime. Initially, things are setup assuming that there is a directory called build_wtetris in the same directory where the wtetris directory resides.

So, it's assumed that there's a directory tree looking like this:

somedir
-- build_wtetris
-- wtetris

You didn't create the build_wtetris directory within wtetris, did you? The relevant files would not be found in that case, and since I didn't bother writing any error checking code to test that condition, it would result in a segfault.

Other than that, it's hard to say without a stack trace.

+---------------------------------------------------------------------+

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#8 ultramailman   Prime Members   -  Reputation: 1563

Posted 12 November 2012 - 02:20 PM

Haha thanks, I got it to work. My problem was that I misunderstood the readme, and mkdir'ed build_wtetris inside wtetris-master. And my other problem was that I didn't rename wtetris-master to wtetris. At first I even googled everywhere about ioftell, because gdb said thats the place where it was crashing.

On the game: nice and simple, I like wireframe. Cool ripple effect too. I'll definitely keep this for studying later.

On c99: Now I understand, you are using c89 with gcc extensions (I thought you were using windows).

#9 Goran Milovanovic   Members   -  Reputation: 1104

Posted 15 November 2012 - 01:21 PM

Glad you got it resolved.

If you want to provide a patch, on github, to check for "file not found", and to do the right thing when that's the case, feel free to do so.

Same goes for anyone else -> Small fixes, or even new features are a good way to learn about git and github, for those of you who are new to either.

On c99: Now I understand, you are using c89 with gcc extensions (I thought you were using windows).


Well, as I said, it's just C that I know, but in reading the following, I'm pretty sure that it's c99: http://cboard.cprogramming.com/c-programming/62227-c89-c99.html

+---------------------------------------------------------------------+

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#10 Josh Petrie   Moderators   -  Reputation: 3110

Posted 15 November 2012 - 01:43 PM

Moving to YA.

Josh Petrie | Core Tools Engineer, 343i | Microsoft C++ MVP





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS