So I Finally Took Time to Make a Game (Sebt3)


ekianjo

Hardcore Member
Joined
May 7, 2012
Messages
8,261
Location
神戸市、日本 (Japan)
A long and detailed article by Sebt3 about what he went through to make his recently released Schmuppan Shoot'em up. Recommended read, on PandoraLive: 



--> Continue Reading

sebt.png
 
Last edited by a moderator:
Just a side note to tell you, this have been written a bit before the release.

Your feedback have been awesome and way over what I was expecting when I wrote that.

So: thank you ! :)
 
Looks really nice, I've not played it yet, I need to hit the repo and d/l some new games on my Pandora :)

Nice work, on both the post and the game dev
 
Just a side note to tell you, this have been written a bit before the release.

Your feedback have been awesome and way over what I was expecting when I wrote that.

So: thank you ! :)
Thanks for the writeup, was a great read. You certain hit a few nails on the head, especially when it comes to motivation.
 
Nice article!

It is indeed harder (and much more work!) to create a game than it is to play it! :)

But also more rewarding, in a way. Intellectually at least. In a sense, it's your little baby, something that you can be proud of.

I'm currently writing a science fiction novel, and I'm finding out the hard way that it is much more work to write a book than it is to read one. I mean, not just a "constant factor" more work, as if it's like reading but 10 times slower, but really it is something else entirely. Re-reading what you wrote (which I end up doing a lot while writing, in order to make sure that the plot is consistent, the pacing is right, everything is polished, etc) seems like a trivial effort compared to the writing itself, maybe even one of the easiest subprocedures of the process (even though this kind of "reading" is already something else than normal reading, because you're reading to improve the text, not just to understand it). Just like playing your own game is something you have to do quite a lot while coding a game, but it's not the playing itself that is the hard thing. And in both cases it's hard to get the balance right between not reading/playing enough (so it is not polished) and reading/playing too much (so you don't have any "fresh eyes" left and you're no longer able to spot problems because you grew too used to them).

It's probably the same with all kinds of creative work, and this is probably related to the P vs NP problem in computational complexity. P is the class of problems you can solve in polynomial time, while NP are the problems for which you can verify whether a solution is correct or not in polynomial time. Obviously P is a subset of NP. It is widely believed that P is a strict subset of NP.

If P would be equal to NP, then creating a game would not be harder than enjoying a game, composing a symphony would be only as hard as listening to it, writing a book would take no more effort than reading it, coming up with a mathematical proof would be as easy as checking a given proof, playing chess would be no harder than checking whether a series of moves is valid according to the rules of the game.

Most complexity theorists assume P is not equal to NP, although there is no proof yet. Ironically, it may well be the case that P not-equal-to NP is hard to prove because P is not equal to NP. At least, if P equals NP, then in principle, it should be easy to find the proof of P=NP; that is, if P=NP is a theorem that is not independent of the basic axioms of mathematics, and if it has a relatively short proof (say, it can be done in a few hundred pages), then there exists a computer program which can find that proof in a reasonable amount of time. I would think that if P=NP, then we would have found the proof already :)

Anyway, congratulations with your game! I hope you'll find time for more of this stuff!

(oh and have you decided on a license yet? ;) )
 
Anyway, congratulations with your game! I hope you'll find time for more of this stuff!
Yet to be seen :)  
(oh and have you decided on a license yet? ;) )
Nope. I havent tough about it much lately, but will probably go GPLv2.
About your comment on the repo : C4A support is in. It's actually the main point of the game. (beside your 77k score got posted :D )
 
(oh and have you decided on a license yet? ;) )
Nope. I havent tough about it much lately, but will probably go GPLv2.

About your comment on the repo : C4A support is in. It's actually the main point of the game. (beside your 77k score got posted :D )
Yeah, I just noticed that it already has C4A support -- nice!

GPLv2 would be cool. Any particular reason for not using GPLv2+ or GPLv3+ ?
 
GPLv2 would be cool. Any particular reason for not using GPLv2+ or GPLv3+ ?
I will never agree a moving/changing licence, so the + is a clear "NO, never". It's like giving an empty cheque to the FSF...
I dont see anything tivo-able in my code, so v2 is good enough
 
GPLv2 would be cool. Any particular reason for not using GPLv2+ or GPLv3+ ?
I will never agree a moving/changing licence, so the + is a clear "NO, never". It's like giving an empty cheque to the FSF...

I dont see anything tivo-able in my code, so v2 is good enough
Tivoization can happen to any code. In this case, just imagine some cheap chinese gaming handheld that comes with a copy of your game (modified or not) pre-installed (maybe together with some other games), while not allowing people (e.g. you) to run anything else (e.g. a modified version of the game) on that handheld.

There are more bugfixes between v2 and v3 than just the tivo thing though, so you may want to consider GPLv3, or "GPLv2 or GPLv3".

If you make it GPLv2-only (without the +), then it's not compatible with GPLv3 and some other FOSS licenses (e.g. the Apache license). The GPLv3 is also probably more robust internationally (GPLv2 is kind of tied to the US legal system) and deals better with patents and DRM.

I see your point about the blank cheque. However, there is not that much that could happen really, even if something very weird would happen to the FSF. If GPLv4 would be undesirable, people can still fall back to the older one. Essentially, GPLv2+ means it's licensed under GPLv2 (so I can e.g. modify your code, add some GPLv2 code to it, and release the result as GPLv2) and also under GPLv3 (so I can modify your code, add some GPLv3 code to it, and release the result as GPLv3), and also under any future GPLv4. In one extreme case, GPLv4 adds restrictions so it becomes more 'viral' or more like a proprietary license (but then people can just not use the "any later version" license option), in another extreme case, GPLv4 removes restrictions so it becomes more like a public domain license (and then the 'viral' nature of copyleft is gone). But realistically, it seems extremely unlikely that if there ever is a GPLv4, it will not be in the spirit of the previous versions of the GPL.

Anyway, as long as the number of authors is small enough, it's not really necessary to have the "or any later version" clause, since it's easy enough to update the license when it is needed. When there are dozens of authors though, it becomes harder to just update the license, because you need permission from all authors for that.
 
So now that you're done. How do you reflect on your choice of going back to C instead of C++?

Interested because I work on a C++ engine with a friend and sometimes wished that we'd gone the C way.

Let’s say that half of them downloads and play it (very unrealistic), it would mean each downloader should finish the game at least 7 times.
If you gift me a Pandora I absolutely swear that I'll give your game at least 7 playthroughs ;)

EDIT: Oh and thanks Ekianjo for sharing the article.
 
Last edited by a moderator:
So now that you're done. How do you reflect on your choice of going back to C instead of C++?

Interested because I work on a C++ engine with a friend and sometimes wished that we'd gone the C way.
I would ask why do you wish you've gone the C way. C is still there in c++ (well mostly) ;) The problem with C++ is when you over-design.

Say you have orcs as ennemies in your game. If the smallOrc class inherit the class Orc which inherit from Enemy which inherit from drawable, hasLife and entities. Drawable is is created out of the template doDrawingTempl .... you have a fucking big problem.

Else go ahead, C++ is a very nice language.

"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

-- Bjarne Stroustrup
 
So now that you're done. How do you reflect on your choice of going back to C instead of C++?


Interested because I work on a C++ engine with a friend and sometimes wished that we'd gone the C way.
I would ask why do you wish you've gone the C way. C is still there in c++ (well mostly) ;)
The problem with C++ is when you over-design.


Say you have orcs as ennemies in your game. If the smallOrc class inherit the class Orc which inherit from Enemy which inherit from drawable, hasLife and entities. Drawable is is created out of the template doDrawingTempl .... you have a fucking big problem.


Else go ahead, C++ is a very nice language.


"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"


-- Bjarne Stroustrup
Oh, I would say mostly for nostalgic and stylistic considerations. As you say it is easy to over-engineer with an OO language and with pure C it takes part of the temptation away.

Kinda wish to see also how the game/engine would evolve if I was not thinking in the term of objects and using the STL goodies.

I know C++ is a very nice language as I use it daily at work and there are some great new C++11 features.
 
hopefully soon I will have my games ported as well. I have one game posted on the boards right now but it is a windows only game :/. Good job sebt3! I will definitely be trying out your game very soon when school and family matters don't get in the way. This has been a busier summer than I thought.
 
Is this the right place to Thank you Sebt3? if yes, then Thanks!
 
hopefully soon I will have my games ported as well. I have one game posted on the boards right now but it is a windows only game :/
I doubt you're using w32 API. But you might be using DirectX. So 1st thing 1st, port it over SDL for Windows. Then get a linux build up and runnning. Lastly build it for pandora :)

Is this the right place to Thank you Sebt3? if yes, then Thanks!
Well there's also a release thread, but thanks ;)
 
I doubt you're using w32 API. But you might be using DirectX. So 1st thing 1st, port it over SDL for Windows. Then get a linux build up and runnning. Lastly build it for pandora :)
Yeah lately I have been teaching myself SDL, but work gets in the way sometimes and delays my studies. Sooner or later I will have things up.
 
Regarding language choice, what makes something c vs c++? It is simply the compiler used; what I mean by this is you can take a C program, and compile it with a C++ compiler and now it is a C++ program (admittedly you may have some minor compile errors to fix). So based on this, something being C++ is not a problem (given that a 'good' C program can actually be compiled as a C++ program too).

There are reasons people don't like C++, in this thread there is an example of inheritance, which is something that comes up quite a lot in games development these days. It is worth pointing out the old school advise for C++ is to prefer composition over inheritance, but somewhere along the way, education institutes (in particular) decided inheritance was the 'right' way to do everything, and started throwing it down every ones throats. The biggest problem with this is that the problems with this design doesn't really become apparent until you've built up quite a lot of code, which isn't something you so often do when working on small projects at say university.

Something that has received some amount of popularity/interest in the last few years is 'component based' architecture, I won't explain it in detail as there are better sources on the internet, but essentially everyone entity in your game is made up of a series of components, it moves away from inheritance and back to the (originally recommended composition). It is still quite a new area (to most), and as such there isn't so much readily available information on how to implement and solve all the various issues, but it is at least rather interesting.

The other big area C++ has a bad name for is long, complex syntax, especially when you throw in templates. There is some truth in this; although the more recent C++ standards have introduced the auto keyword which help this quite a lot.

Anyway, the end product is all that matters, if you get a nice game out there than runs with decent performance you are a winner, who cares if it is C++ or C or Java or whatever. I've programmed in lots of languages, and know of some amazing benefits of some languages over C++, but at the same time I always feel compelled to stick up for C++ when it gets a bashing, purely because often it isn't deserved :)
 
Regarding language choice, what makes something c vs c++? It is simply the compiler used; what I mean by this is you can take a C program, and compile it with a C++ compiler and now it is a C++ program
But you can't do vice-versa. So C++ vs C is not mearly a compiler. There's a different design principal between the two (functional vs object orientated). Yes, there's some overlap, but it's by far not "just a compiler"
 
C++ is mostly just an extension of C though, so if you code in C++, you can reuse code written in either C or C++, but your code cannot be reused by people who write in C. The extra functionality of C++ comes at a (small) price in terms of performance too.

But both C and C++ are just relatively low-level imperative programming languages. To me, all imperative languages look roughly the same -- whether it is C, C++, C#, Java, Pascal, BASIC or whatever. The main differences between them are syntax, syntactic sugar, and standard libraries. The core ingredients are the same: functions/methods/procedures, variables with destructive assignment, conditional branching, iteration. Assembler code with lots of syntactic sugar ;)
 
  • Like
Reactions: Ziz
Back
Top