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

Started by
8 comments, last by jpetrie 11 years, 5 months ago
I wrote this OpenGL tetris clone in C. Here's a quick video that shows the game in action:

[media]
[/media]

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 | +---------------------------------------------------------------------+
Advertisement
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

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?
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 | +---------------------------------------------------------------------+

Thanks for the kind words.

[quote name='ultramailman' timestamp='1352339524' post='4998689']
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?
[/quote]

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.
Finally compiled it... and when I run it, bam, instant segfault :S
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 | +---------------------------------------------------------------------+
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).
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 | +---------------------------------------------------------------------+
Moving to YA.

This topic is closed to new replies.

Advertisement