On 12 June 2011 12:26, Tim Down <[email protected]> wrote:
> On 12 June 2011 11:28, Sebastian Poręba <[email protected]> wrote:
>> I'm sorry to say that, but jQuery is not the best choice for game
>> development. I believe in "go native or go home" here, jQuery hides
>> from you how complex and slow some operations are. If you need a
>> framework, use one intended for games, like Mibbu (http://mibbu.eu/).
>
> jQuery is no problem here. It's doing next to nothing in the main
> event loop. The main overhead it's adding is in initialization, where
> it's not going to be a problem.
>

The tutorial I'm writing is aimed at beginner JavaScript developers,
so I wanted to avoid as much hassle as possible. I know they'd mostly
be familiar with jQuery, so I went with that for the DOM/event code.

>
>> Besides that your code is quite good. You may want to merge "var"
>> declarations. Also, try to avoid using switch, in javascript it may
>> fallthrough (http://javascript.about.com/od/hintsandtips/a/
>> fallthrough.htm).
>
> The necessary break statements are there and there are a couple of
> places where there is deliberate use of fallthrough, so I don't see a
> problem with this either.

I'm no slave to JsLint :)

>
>> I'd say something about performance of slice,
>> unshift and other array functions, but I'm not an expert here. My
>> advise would be to check jsperf.com every time you want to use any
>> native function. Often there is a way faster implementation.
>
> The native array methods will be plenty fast enough for the numbers
> used here. Any serious candidate for optimization will be in the
> drawing code, which will be much the slowest part of the whole thing.
>

Absolutely - I'm avoiding most optimisation here - the framerate is so
low that it's not needed.

>> On Jun 11, 8:01 pm, Nick Morgan <[email protected]> wrote:
>>> Hi all
>>>
>>> I've written a basic Snake game in JavaScript. It's available on jsFiddle 
>>> here:http://jsfiddle.net/skilldrick/bg7UF/(it's over 300 lines so thought
>>> a bit long for copy-pasting)
>>> (Also on Github if anyone's 
>>> interested:https://github.com/skilldrick/jsSnake)
>>>
>>> I'm going to be using this for a blog tutorial on canvas, so I want
>>> the code to be as clear and 'correct' as possible.
>>>
>>> I'd really appreciate any feedback/constructive criticism you guys have.
>>>
>>> Cheers!
>>> --
>>> Nick Morganhttp://skilldrick.co.uk
>>> @skilldrick
>
> My observations, for what they're worth:
>
> - Attach the key event listeners to the document rather than the body.
> The jsFiddle doesn't work as it is in Firefox 4. Even better, attach
> the event listeners to the canvas, although you'll need to give it a
> tabindex for that to work.

You're absolutely right, stupid for me not to have checked in Firefox.

>
> - It doesn't look like you need to draw the border every frame, so I'd
> suggest you don't. Just draw it once. There are other optimizations
> you could do to reduce what you draw each frame, but you should do
> some testing to decide if it's worthwhile first.

I agree that there's plenty of room for optimisation, but as it is,
the game's so simple I doubt it needs it.

>
> - The canvas context is a host object, so its moveTo() and lineTo()
> methods are not obliged to be genuine Function objects and therefore
> may not have an apply() method. You're probably OK in current browsers
> and likely to be OK in future browsers, but it's not guaranteed.

Good point - I may be safer manually unpacking those arrays.

>
> Otherwise it looks pretty sensible to me. I do agree with Sebastian up
> to a point about jQuery: it's not doing much for you for this, so I'd
> be inclined to drop it entirely. It's not as though you're going to be
> worrying about IE < 9 anyway if you're using canvas.
>
> Tim

Thanks a lot for your input!

-- 
Nick Morgan
http://skilldrick.co.uk
@skilldrick

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to