Go on, ask me anything.

@jmart (Yea i know i am not Cas)

You know if the game can get the data via whatever method, its really easy for anyone who can be bothered to run a decompiler to do the same. Just look at starCraft. Took almost all of about 3 days to have all the graphics ripped from their “package” format and even less time for cracks and cheats.

So what what was the point?

The only reason I’ve got my own .jgimage format is because it was quicker to write a loader and saver for it than it was to try and write a png file loader and saver back in the day when I didn’t use any AWT code. Nowadays I’m shipping AWT anyway so it’s not so important any more but I’ve just left it in there - there are still places I envisage being that don’t involve AWT. I’m looking at a headless JRE on Raspberry Pi at the moment but it’s just been thoroughly broken by Sun and won’t run any more on the latest Debian for RPi, so I’ll have to wait a bit longer. My plans are to port the bare minimum bits of LWJGL onto SDL so I can access the framebuffer and mouse/keyboard stuff without having to start X and lose loads of RAM and probably performance too.

As for the obfuscated jars… well, it’s a massive pain debugging when stacktraces are obfuscated, and let’s face it my code is barely described as “complex”. I don’t write cutting edge 3D technology. It’s just sprites. Any fool can do sprites. If you have to copy my code to make a game you’re not going to get very far :slight_smile:

Cas :slight_smile:

Programmers want to place a much greater importance on code than is really the case. Anyone that can steal AND use your code (for real) can most likely write the same thing from scratch in less time than figuring out how your stuff works.

Indeed. Looking at my code it hardly needs any obfuscation in order to make it obscure and difficult to understand anyway 8)

Cas :slight_smile:

Young programmers specifically I’d say. The more experienced dev knows only too well that what he’s doing tends to be far from innovative. On top of that code is only a means to an end. Its not like wooden planks, some glue and a couple of nails are worth much, its the completed product (dog house, whatever) that is something you can sell.

I can understand that you want to use simple, polished tools and don’t want to waste time with someone else’s beta-quality unpolished projects, but on the flip side you’ve taken this attitude too far into anti-learning, anti-intellectual, stubbornness, and laziness. Some technologies are actually worth a serious learning investment, and this is one of them.

Git has real innovations over SVN. I’m not the absolute best person to articulate them yet, but this isn’t just empty buzz, and a hollow new trend. It’s really a better product than SVN ever was.

There is a learning curve. This isn’t a $0.99 mindless iPhone game, you are expected to do textbook learning to get the full advantages from this. Any good git user is fully comfortable and conversant in the command line interface and understands the internals, and uses the GUIs and IDE integrations as optional conveniences.

If you are going to be a programmer for a long time, it’s worth the investment of learning git at a deeper level, and becoming a power user. Ideally, one would know the high level concepts of git including the snapshot system, Merkle trees, branching, merging, conflict resolution, fast-forward merges, etc.

I’m wicked and I’m lazy. I’d use git if all the complexity was hidden away behind a user interface that just worked. That’s why I use Eclipse in the first place. It’s why I use Windows in fact. And Java. All the hard stuff just works, and I really don’t care how it works just that it’s really easy to work out what to do even when you don’t know how to do it. I’m not into anti-learning or anti-intellectual, I’m into getting stuff done without fighting my tools. I like it when computers try to help instead of hinder me. I’ve got precious little time to work stuff out, and even fewer brain cells.

I want to use git, but it seems to require too much beard. I shall grow my beard again and see if git agrees with me in a few weeks time.

Cas :slight_smile:

Why not mercurial? But a lot of people have a hard time moving from centralized to distributed VC. I didn’t so much because i was trying to use SVN as a distributed VC, and it failed badly… I even ended up with a corrupt repo a few times.

Why did i choose git? Well it was simple. It was installed on the machines at work while mercurial wasn’t. Linus’s only complaint of mercurial was it was too slow for the size of linux. Hardly something us mere mortals need to deal with.

As for the repo tool not forcing you to be centralized (you can be off course), not sure how that make something unfriendly?

I like git, and I like the idea of maybe using it to deliver updates. But then the user needs git installed, no? Does that mean you install it for them or what?

I’m having another bash at git. So far I’ve managed to share a project into a local git repository, and even managed to push it to my server over ssh, after a barrage of hopelessly obscure dialogs with help buttons that really amusingly do nothing, weirdo error messages from git (wtf is a “funny ref?”), and some total guesswork.

What worries me is what happens when Chaz works on the same project concurrently and does a push. What happens when we’ve both diddled the same thing? How does git manage conflicts?

Cas :slight_smile:

You can’t push if there are conflicts, it will give you an error. What you do is pull, merge locally, then push the merged commit. That’s why the best flow of work is pull before you push anything.

The nice thing with git is that it won’t let you push anything if there have been any changes since you last pulled. If that’s the case, the person that wanted to push needs to pull first, resolve any conflicts that occurred locally, then try to push again. Quick article that explains it nicely after a random google search: http://yehudakatz.com/2010/05/13/common-git-workflows/

You’ll also find that git handles merging better than SVN and you don’t get as many trivial conflicts.

Or you can use DVCS that is sane, like Monotone or probably Mercurial (not that pretty as Monotone, but similar basics).


git add .
git commit -m "My stuff!"
git pull
---sort out any conflicts
git push

Alternatively if you don’t want to commit just yet:


git stash
git pull
git stash pop
---sort out any conflicts

Cas, would you agree with the coding practice at my work: “If you don’t need it right now, don’t do it.” So don’t write any code you think might be useful in the future. Adding in unnecessary ‘good ideas’ just introduces bugs, bloats the code and adds effort to simple tasks.

I often think of this guideline when I see people say they are ‘working on the engine for their first game’ - just work on the game, get the code right for the game, and reuse the good bits in your next game.

Don’t write engines, write games.

Also the scale of games we indies folk can realistically produce, means “cut and paste and hack” to the next project is probably going to good enough anyway.

Even big studios should do this… how many times to they really reuse the engine? In fact they almost always have the tag line “all new engine…” in their marketing speak.

That’s almost always marketing bullcrap though, because they think by saying that players will assume it’s bigger and shinier than the previous game. Usually it just means the same engine with a new coat of paint. Skyrim being an obvious recent example.

I don’t regret using mercurial … except for the versionied tags

I wrote stuff in the beginning to achieve what we needed to achieve, no more, no less. However, being a software engineer of many decades, I have a strange instinct for things that things might one day need to do and how to put things together in a way that doesn’t make it so hard to change later. Coupled with this strange instinct is a totally fearless bite-the-bullet-and-just-fecking-do-it attitude to refactoring, re-engineering and rebuilding things. If we needed to make a change to the sprite engine for Revenge of the Titans that broke the other three game using it, we made that change, and then went and fixed everything that broke.

Having now got to the point where we have four games relying on the library of code we’ve developed over 10 years it’s pretty hard now to justify doing that, so I’ve forked the lot, refactored it, took a fork of Titan Attacks, and I’m making this new version of Titan Attacks work properly with it by way of being an awesome real-world system test.

Along the way I’ve added every single new feature that Chaz has asked for. Nice :slight_smile:

SPGL2 as it is know makes a mockery of all other 2D game engines, or so I think, anyway :wink: Well, it does exactly the job we need it to, and that’s good.

Cas :slight_smile:

I would like to see the source code of Alien Flux… :smiley:

[quote]ALIEN FLUX™ - Ground Breaking Arcade Game By PUPPY GAMES™ Goes Live

Alien Flux is being heralded as a flagship for Java gaming
[/quote]
http://forums.codeguru.com/showthread.php?249875-ALIEN-FLUX�-Ground-Breaking-Arcade-Game-By-PUPPY-GAMES�-Goes-Live

I bet you thought that code was good :3