domasx2/banditracer-client — comment on commit 9f042f3d863e6d249c8f99e69fedab42346a0ac7
File:  line 0
By oberhamsi:

hey domas,

> As I might have mentioned a few dozen times, my approach to making Bandit
> Racer was to do it quick and dirty, and once I'm sure how the pieces are
> supposed to fit in the end, rewrite it nice and clean. I think that at this

i remember that :) i think it's a perfectly fine approach.

your goals sound sensible. it's still hard for me to see those in the code but your explanation (list of goals) made some things clearer.

i've written a couple of games and never got around extracting a game engine. basically i do copy&paste re-use. for example the animation classes,
which i guess you've seen, gets changed and updated for every game because the sprites are usually laid our slightly different and the way
animation-stepping works changes. and i didn't want to make one 'can do everything' - class but instead i just change the class. mantainability is
non-existing :) but once i have a game out of the door, i rarely look back for patching (but i do re-use in the copy&paste sense).

will your game engine be focused on box2d? top-down only (i don't think so, but maybe)? any kind of games you definitely want to support / not
support? did you look at craftyjs and the likes?

an abstraction, maybe just a common pattern, to do multiplayer games (serialization, syncing) would be very interesting. frankly it's the part
that interests me most about banditracer: the multiplayer :) there's probably just a handful of games around that do that in JS yet.

> > i was a bit shocked to see you overwrite the standard JS `Object`, i
> would have called it `EngineObject` or something but i don't fully
> understand what you do, yet :)
> I prefer overwriting a key variable in the scope of object.js rather than
> having to write engine.EngineObject a bunch of times :) Might be there are
> some risks i'm unaware of. If so, let me know :/

afaict, since you are using `Object` scoped to a module object when you load, it shouldn't overwrite the default JS `Object`. except in the module
which defines your `Object`.

> This commit resolved the worst problem with BR code, lack of proper class
> hierarchy and physics abstraction. My next immediate goal is to properly
> enable sound, for which I'm thinking of Web Audio API with fallback to
> Audio object. Did you consider implementing Web Audio into gamejs?

i don't like implementing stuff which doesn't work reasonably cross-browser. i haven't checked lately, but webaudio is chrome only?

basically: if there's a w3c spec against which i can write it: welcome to gamejs. if not: wait.

other things:

maybe you've seen that i added fullscreen support in a branch. this, i think, is very interesting for banditracer since it would do away with the
multiple-resolution links you have. you could just define a maximum resolution and if the user checks the `fullscreen` checkbox, switch to that
maximum or the screen resolution (whatever is smaller).

another thing are "Workers" (another branch), which could potentially be pretty awesome for bandtiracer but would require a lot of refactoring.
workers are available on the server too, with the same semantics, and it would make it possible to utilize multiple cores. something i needed for
that pirateking game i showed in freegamer.

looking forward to re-enabled multiplayer :) oh, and i have one friend who regulrarly plays banditracer hehe how popular is it, btw? i like the
new website design, much cleaner & professional looking.

have a nice day
simon