Still hardly any games, why entity systems suck, and why 4k is good

You’re bashing the obsession with certain advanced technologies, and saying that people never create any games with them due to them being way overkill to what they are making? So basically, you’re saying that we are all incapable of making big scale games, and should spend the rest of our lives making 4kb games instead?

Maybe the problem isn’t the individual programmers’ skills, but rather our inability to organize bigger development teams than a few persons? Many Java games have either started off with a single or very few persons in the initial team, and have later expanded into companies, e.t.c. You keep talking about how many games copies individual people have shipped, but is that really relevant? Not many of us are going to ship even thousands of copies of our games. Isn’t it the same with every programming language?

I’m using a pretty powerful entity system for the game I’m making, but I didn’t make it myself. The point isn’t that it’s powerful or scalable or flexible or whatever. It’s that I think that I can write better, more understandable code with it. But, you’re blaming people MAKING too many advanced entity systems, not using them, so does that mean that I’m Doing It Right?

I have a few interests when it comes to programming. My favorite part of game making is the programmed graphics (lighting and special effects). I obviously spend an unproportionality large amount of my time on this part of my games, because that’s what I found most fun to be doing. As a hobby, am I not supposed to have fun? Of course, the number of games I actually release gets lower, but I don’t think that is necessarily a bad thing. That’s because when I have fun, I learn things so much faster. Of course it isn’t good to get too obsessed on some part of your game. I’ve actually gotten caught in the entity system trap multiple times before, but mostly due to the fact that I wasn’t using one that was fitting for my game, and I had basically no experience in the field. I agree that it is a common pitfall like you said.

I’ve just recently realized that I can increase my productivity, my learning rate and how much fun I have by using libraries for the parts that I don’t particularly enjoy implementing myself. I’d say that when people start with Java, it’s better to do everything yourself. I mean, you don’t need many libraries to get a Java2D space invaders game running. You’ll also learn a lot just from implementing every aspect of the game. It’s obviously important to keep your first game(s) simple, but I think it’s even more important to not get stuck on some part of the game.

Cas,

No, Java gaming never really took off. It was never supposed to, if you look at what Sun/Oracle has been doing with Java. OpenGL support had to be created by the community, rather than enabled by the JVM. I guess they didn’t want to have headaches with drivers which they can’t control. There’s other issues as well, but my point is the Java creators/stewards had an idea of what Java should be, and it isn’t really for games. More like business apps or whatever. All that said, we can make pretty cool games with Java.

From the perspective of a game player, there is no concern for what language/tools were employed. The experience is all that matters, including deployment. If the game is compelling enough, players will manually install JVMs and learn command line syntax; they tweak .ini files for Elder Scrolls, right? The game must be compelling, or at least popular enough to overcome the hurdle of somewhat-involved deployment. The task for us is to make games compelling and many of them. Oh, and on Flash games, which instantly get played in your browser… they still get played, despite they’re mostly so simple and sort of lame. Easy as lighting up a cigarette, and about as rewarding, too.

(Quitting time at work, got to meet someone soon, will finish this post later if I remember)

People learn Java to mod Minecraft, even if they hate Java without being able to properly explain why (“Its dead slow and eats massive resources!”, bla bla bla). I mean it doesn’t get any more incredible than that IMO.

@OP: Really nice rant and very true. Been through the works myself. I went from spending years on developing general purpose editor tools (starting over three times), down to creating small, specific, manageable and game specific tools. When I started to do that, I managed to do in a week what normally took me several months to achieve and at the end it always just didn’t work the way I wanted it too. Because it was too generic. Not only that but I started to create the games such that they complied with the tool - that should never happen.

IMO the term “generic” should be banished from use in the context of software development. Small, specific and to the point rules.

@theagentd -

I don’t think entity systems are in any way advanced - I think they’re a horribly complicated way to do things in Java that’s inefficient, fugly, and fighting against the language. With the right language support - prototyping - it makes more sense. In Java, it just makes things slower and fiddlier. There’s boilerplate code all over the place, castings, instanceofs, indirection, memory scattering… it makes no sense for anyone’s games in here. Its defining characteristic in these forums is that people have to ask how the hell to do it and how it works and even why to do it all the time, and then go on to design all sorts of different implementations of achieving the same thing. Stop! Alert! Rat odour detected! If you’d just used a simple class hierarchy you’d a) understand it straight away, b) have it implemented and working almost as soon as thinking of it, c) not have to ask any questions about something so bloody trivial and d) you’d also discover it was neat, tidy, fast, easy to maintain (yes - easy), and easy for others to maintain.

Also, I think you might be falling into a classic engineer’s trap of not seeing the wood for the trees in the argument I’ve laid out. You say yourself, “It’s that I think that I can write better, more understandable code with it” - and immediately you are swallowed into the conceit of the engineer. There is no such thing as better, more understandable code for the outside world. Are you writing a game, or just tinkering for the sake of it? You are not making an MMO. You don’t have a team of 30 programmers. Your source code probably will be no use to anyone else! All you’re learning is how to overengineer, procrastinate, and coding so you don’t have to bother designing the game in the first place, which seems all very clever until you never finish.

And one last thing - you have another engineer’s trap of seeing everything in a binary world view. When I say that Java4k is good, I very clearly do not mean “you’re saying that we are all incapable of making big scale games, and should spend the rest of our lives making 4kb games instead?”, but as an engineer your reductionist binary mind tries to boil down some simple metaphors and argument to whatever outcome you want it to be. Using your reductionist approach against you I will spell out again what I am trying to say:

If the probability of a game being finished is proportional to the amount of code it takes to make it finished, then the less code you write, the better. This is helped by being restricted in what you can write in the first place, and Java can sometimes be a hindrance to the inexperienced game developer in that it lets you do things in 100 different ways. The situation is far worse in C++, and far better in Flash and Unity. My entire discussion is based not the inference that everyone on this board is “incapable” of writing games, but the empirical evidence still seems to suggest that this is the case, and I suspect that the problem is that too many developers here are getting lost down the squirrelly 99 ways out of 100 that lead to nowhere. Let there be light.

Cas :slight_smile:

While you are right with all your arguments, I think the main reason for this is, that most people here simply aren’t interested in writing games - they just haven’t realized it yet :wink:

This claim might be far fetched for others here, but it was at least the truth for me. Some might remember, that I even quit my day job to be a full time game programmer, but this never took of. I spend most of the time creating 3d-engine stuff, a terrain rendering system, a component system, IoC container driven game states, a generic animation framework and incorporating multiple 3rd party stuff, like persistence frameworks etc. etc.

At the time the financial support ran out and nothing was even remotely done, I asked myself, what the problem was. After a drunk evening I realized, all I wanted was to code some fancy code. Doing stuff in innovative and - to my eyes - elegant fashion. I also was under the impression that once I have all my fancy frameworks in place, making a game on top of it, would be a breath. This is however total BS. Making a fun game is the hardest part of it - regardless how the code looks underneath.

In the end I more ore less gave up on game programming - because it was apparently not what I wanted!

That is profound and I think maybe wins the thread.

Cas :slight_smile:

yeah could be - I mean my schedule when making a game is thinking about gameplay, testing, making maps / sketching level design, writing story, sketching sprites, writing a script, drawing item graphics, artworks, making sounds, making music - all that
because unless you do a wireframe game without story, there is a lot of assets to be created

bitter truth is: I hate programming, but unless you have really really capable programmers who work for you, you gotta do it - but its gets better once you find people to work with

[quote=“Cero,post:67,topic:37519”]
Werd! This is exactly how I feel. Programming is a major irritation getting between me and my ideas.

Cas :slight_smile:

[quote=“princec,post:68,topic:37519”]

you have ideas, visions - but then you think oh my god, how am I gonna do it, all the classes, call this and that
in the end you have some stupid bug, in the best case its like x instead of y (copy paste), takes you hours debugging it

when all you want is just to have your vision happening, and don’t put up with the computer’s stupidness

it’s like making a movie: I don’t want to build a camera for it ! D=

Fun facts:

  • Component based models largely stem for the work of Brad Cox, the inventor of Objective C.
  • Problems related to the evolution of design in class based OO was rapidly noted by the inventors of SmallTalk (ya know, the original class-based OO language) and thus some of them ran off and made Self (ya know, the original prototype based OO language…note that the naming isn’t an accident)

There is no such thing as “a silver bullet” in computer science. I understand component based design model pretty well and it is complete masturbation if one is not attempting to address data flow related issues. The so-called tutorials that demonstrate its flexibility, from what I’ve seen, are completely disingenuous as they show the stupidest way on the planet to design something and then compare it was a component-base version of the same and call it progress. My guess is that the number of people here that need to use a component-based design is roughly double the number of people that need to run out and learn Erlang so they can use an actor based model.

I agree with this 200%. I also came to this realization many years ago. There are lots of interesting problems in games development, but actually making games is really A LOT of HARD WORK. That’s why I fiddle about with doing 3d in 4k. That’s fun.

@Princec

I’ve probably written several A4s of text by now only to erase it again. You just aren’t saying much to be honest. I don’t even know what to write after almost 2 hours. You’re post is actually almost ridiculously aggressive, as it just seems to be a bunch of personal opinions without any real evidence for anything. If you want people to start doing as you think is right, tell us HOW we should do it. No, wait. Tell us how and WHY we should do it. If not, then don’t mind me and carry on like this.

I don’t have the vast experience of different programming languages that you seem to have. I started off with basic scripting and then went directly to Java. I’ve done some C++ in school, but I never got past the command console due to a lack of interest. I have a hard time telling what’s fitting for Java as a language, which is one of your arguments against entity systems.

The third part of your post is the most confusing one. Now, English is not my native language, so I might be misunderstanding this, but it seems as you’re saying that I’m a complete idiot, spewing out things about my “reductionist binary mind”? I don’t even completely understand what you’re trying to say with this part, but you seem to be blaming me for being too black-and-white in my opinion by bashing my sarcastic joke about 4k games? Who’s the one being binary again?

I just can’t agree with your last part about smaller games being better. Like people have been saying, not everyone’s goal is to release a complete game by themselves. I’m only interested in some parts of game development. I fully realize that this reduces my chances of ever actually releasing a complete game, and I agree that I like the tinkering part of programming.

I’m a little shocked. I really wasn’t expecting such an “angry” response from the famous Cas…

:emo:

he’s not angry but honest

he is frustrated/sad/disappointed that most people, will rather obsess with technology instead of getting their act together and make a game
theoretically there shouldn’t be a reason why there are to few java games
but well blahblahblah’s argument is still the strongest

“java is slow - definitely not what you want to use to program games” - it is a notion written in stone since 1.0 and since few people are open minded, most won’t even seriously try java for game development

4k is just one example where it seems to go better for java - and he stated the reasons

Goodness no, I’m not being aggressive, just making some meta analysis. I would never have guessed English wasn’t your native language!

What I was saying is that you think like an engineer, and that is to concentrate for ages on lots of tiny little details whilst losing sight of the big picture, which is maybe the underlying gist of this thread. It is not intended to demean you - it is just an assessment of your thinking and possibly, a clue as to why you are where you are.

As for evidence, the hows and the whys: all I’ve got is facts and completed projects to go on. All the completed projects here are either tiny (j4k), or ruthlessly hacked together and released. Flavour of the month is entity systems, which have been around for years, yet no-one seems to have made a proper full game here using them yet. I’ve not said that smaller games are better - I’ve said that finished games are better. It just so happens the smaller and less full of paradigm shifts they are, the more likely they are to be finished.

Cas :slight_smile:

To blah^3, I merely cough politely whilst muttering “grexengine” under my breath :-*

Cas :slight_smile:

Sort of. It is that, but only so I can use my fancy code to make games. If I didn’t have at least that desire, I couldn’t justify the libs…

e.g. tonight I just made a new map for Warlight (http://warlight.net). I have never done this before, I didn’t even realise it was possible until this afternoon.

By playing with the game design and rules, I was able to slightly subvert the existing game and make - effectively - a new sub-game, just by playing with a map editor. It’s nothing revolutionary - but it’s a different kind of fun.

Took me approx 3.5 hours to figure it out, come up with an idea, implement the idea, and put it live on the Warlight servers.

I’m more interested in “having new ideas for game designs” and “implementing those game designs, playtesting, re-designing until they’re ‘fun’” … than I am in “writing reams of code”. Writing code is fun, too - but my passion is making games, not making libraries.

As Cas gently points out, there was a time when I tricked myself into being a library-maker instead of a game-maker. After burning years of my life on something academically worthy - but shipping only one game (commercial, but embarassingly simple) - I eventually stopped lieing to myself, embraced what I really wanted, and started “making stuff and putting it into other people’s hands”. That’s what I love doing.

PS: putting it into other people’s hands is critical; you quickly learn how crap other people think your stuff is. You quickly give up completely, or learn to make things “good enough for everyone else”. Very important lesson to learn, IMHO

Dear Cas,

First of all, thanks for writing a post that stirs me enough to repsond. This is the second part of the post I had made yesterday.

I guess there are different types of people who come to JGO. I speculate that, in the vast minority, there are those who write Java games and release them, and perhaps make a bit of coin. Then there’s the majority.

Most of us won’t make a game or finish. This is not news to you, of course, but I feel some discussion about this is good.
Perhaps a large slice of the JGO majority doesn’t have a clear idea about what game they want to make. So, why would they be trying to make a game, or at least talk about doing so? Games are cool, man. They want to program something… anything… and a “game” would be fun. Later, they find out, whoa, a game turns out to be not trivial, especially when you need to learn to rotate images in place, put objects in a map created from a file, etc. in Java’s way.

Most people aren’t persistent. A home cooked meal would have been most satisfying, but, eh, fast food was just around the corner and what’s a little indigestion, anyways?

The other slice of the JGO majority have a clear and mature idea about a game they want to make. So, where’s their games?
I don’t know :stuck_out_tongue:
Mine is enduring code re-writes to better satisfy my vision. I’m thoroughly testing and fixing features.
I’d rather release it later and good, than early and compromised to the point of being a disappointment.

This is JGO. We all know (or should) that coding is necessary to climb the mountain towards a completed game. Some things we find out along the way are:

  • wow, it’s time-consuming and difficult, so I will quietly abort
  • wow, I have a non-trivial game idea, and, yes, I will need to engineer some code solutions to make it come to life
  • my wife and friends hate me now, why can’t they just wait until the game is done, then they will love it, and by extension, me, and I will be redeemed :-*

I read some of the earlier replies… amused to see some people want the game and secretly resent the coding, others love to whip and tame the code and don’t think much about a completed game. Unfortunately, I am kind of both: I enjoy firing up Netbeans after work and on the weekends and I design what the game will be on paper when my brain bears such fruit.

Final point, and thanks for reading so far…
I have to sort of eat my words about Flash games. If you have a game idea simple enough to do in Flash, then do it in Flash. Don’t use Java, don’t use even C. Flash will get you to your goal more quickly and painlessly. It would be the right tool for the job. You wouldn’t use a modular hydraulic pump to drink when a straw would do, right?

You do need the modular hydraulic pump sometimes, though. I am making a not simple game, and Java has been flexible enough to meet virtually all of my game’s needs. I sure as hell would not use Java to make a pinball game, though… I would have quit halfway through the Java2D tutorial :persecutioncomplex:

About Flash games (and any other platform for that matter): it’s absolutely fine using any of these tools. But, this is java-gaming.org, so i’truth, anyone who says, “Just go use ${other_language}” in here basically needs to STFU. If there’s one thing that ties everyone in this forum together it’s Java, so we need a bit less of the hypocrisy of telling people to use some other tool. As for myself I make a vague exception for Scala, not coz I like it, but because it’s Java underneath.

I did some thinking about Java4k recently and there is such a thing as going too far… one reason I’ve not ever bothered doing a 4k entry is that I don’t really have the time to do all that byte optimisation and such. I did once moot the idea of the LWJGL16k compo as a compromise - enough bytes to give far less emphasis on pure code squeezing, and allow a balance on sound and graphics too. Maybe I should resurrect the idea?

Cas :slight_smile:

Sorry to disagree, but regardless of what this site is called and how much I like Java, it’s a means to an end, and it’s not suitable for every possible destination.

There is no shame in using or recommending other languages for purposes they are better suited for. I mean, why force square pegs into round holes? Square peg zealotry?

Java’s great and quite versatile, don’t get me wrong, but you don’t need the modular hydraulic pump when a straw will do fine. :wink: