meyerweb.com

Skip to: site navigation/presentation
Skip to: Thoughts From Eric

Gravity Wars Redux

Over the past few weeks, I’ve been writing a remake of/homage to a game I last played somewhere around 1990: Gravity Wars.  I gave this personal project a few hours here and there each day, or more usually each evening, slowly resurrecting a little piece of my past and putting my own spin on it.  You can check it out for yourself, if you like: Gravity Wars Redux.

There are a few things I changed from the version I played all those years ago, besides the change of colors.  First of all, instead of taking turns, in my version the ships fire simultaneously, meaning a no-survivors tie is possible.  Second, the shot preview paths weren’t part of the original game.  Third, the “Gravimetric display” wasn’t a thing in the original game either.  That and the shot previews are leftovers from my development testing that I decided to keep around, either because I thought they added something to the game or because I just liked them too much to dump.

In fact, most of the code in there is accreted leftovers from the experimentation and development process.  Looking at it now, I can see all the things I should have done.  It just got to a point, as with most coding projects, where I could add another scoop or two of spaghetti to the existing mound and ship it, or I could start over and try to make the lasagna properly this time.  I decided to ship it.

I have to admit the point of all this wasn’t actually to recreate Gravity Wars, as much as I like the game and am glad to have a working copy of it.  It was instead to teach myself about the canvas API, and also to try to get a handle on some JS features that have never quite made sense to me.  I think I did okay on the both fronts, in my own idiosyncratic way.

At this point in a JS-related post, I usually throw in a disclaimer about being a JS newb whose code should never be inspected by anybody.  That’s probably still true, but I know I’ve advanced quite a bit from where I was, which pleases me.  I can see that not just in that the code I’m publishing today, which is convoluted and clumsy but still better than what I’ve written in the past.  I can also tell I’ve gotten better simply because I can see better approaches, as a result of what I learned along the way.

This may be where I end the project, or I may go back and take another crack at making lasagna.  We’ll see.  The carrot for me in doing that is it would let me add some other fun features and useful improvements pretty cheaply, not to mention I could fix some things that aren’t quite what they should be (like the placement of planets and ships, which should be a little less random).  The stick is of course having to rewrite code I already wrote.  I mean, lasagna is nice and all, but I like spaghetti too.

Anyway, I enjoyed writing it and learning as I coded, so if slinging missiles around planetary limbs sounds like your idea of a good time, please enjoy.


I’m indebted to Sohrab Ismail-Beigi, whose 1989 PASCAL source code I studied and in some cases directly ported; and to pascal-source.ru, for making that code available for download.  My thanks to both.

Seven Responses»

    • #1
    • Comment
    • Fri 26 Sep 2014
    • 0850
    Kevin H wrote in to say...

    Nice! You should throw a license boilerplate on that JS code, so people know if they can fork it or not.

    • #2
    • Comment
    • Fri 26 Sep 2014
    • 0936
    Eric Meyer wrote in to say...

    Thanks, Kevin. I was thinking about that, but the problem is always knowing what license would be best, and asking for opinions is like asking people which is the best text editor. I dunno, is there a license that basically means “You can re-use or fork this code if you want, but given the state of the code, you really really shouldn’t”?

    • #3
    • Comment
    • Mon 29 Sep 2014
    • 1037
    Kevin H wrote in to say...

    How about Beer Ware?

    • #4
    • Comment
    • Tue 30 Sep 2014
    • 1025
    Eric Meyer wrote in to say...

    Heh, maybe the next version will be under that license. I was also considering MIT and good old Unlicense, but Beerware amuses me.

    • #5
    • Comment
    • Sun 9 Nov 2014
    • 1519
    Karen Bennett wrote in to say...

    Speaking of Javascript, over the years, I’ve found your Color Blender tool to be very useful. Today I discovered some strange behavior. It seems to have a problem with hex colors beginning with B. For example, BEECEE is converted to EECE0E. It throws away the initial B, shifts the next four characters left, and inserts a 0 in front of the final character. If both of the first two characters are B, it doesn’t even run – the input string seems not to be interpreted, and it doesn’t compute the color array. 0Bxxxx strings are fine.

    Sorry to bother you with something so trivial, but is there any way you can fix it? I’m a total JS noob myself, or I would provide a suggestion for a fix.

    http://meyerweb.com/eric/tools/color-blend/

    Your books have been helpful to me, and I appreciate the mindful, personal, and philosophical thoughts you share on this site.

    Thanks,
    Karen

    • #6
    • Comment
    • Tue 11 Nov 2014
    • 2216
    Eric Meyer wrote in to say...

    Thanks for the bug report, Karen. I think it’s fixed now; let me know if you find otherwise.

    • #7
    • Comment
    • Thu 13 Nov 2014
    • 1415
    Karen Bennett wrote in to say...

    Works great, thank you!

Leave a Comment

Line and paragraph breaks automatic, e-mail address required but never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>



Remember to encode character entities if you're posting markup examples! Management reserves the right to edit or remove any comment—especially those that are abusive, irrelevant to the topic at hand, or made by anonymous posters—although honestly, most edits are a matter of fixing mangled markup. Thus the note about encoding your entities. If you're satisfied with what you've written, then go ahead...


September 2014
SMTWTFS
August November
 123456
78910111213
14151617181920
21222324252627
282930  

Sidestep

Feeds

Extras