#Glass Development Tweet Log

During the development of my game Michelangelo, code-named Glass, I used Twitter as a sort of lightweight development diary.  It was a fun little exercise that encouraged me to reflect on my development process as I was making the game.  It also got me into contact with people who knew more about PhoneGap than I did which proved to be really helpful during development.

So, for the curious, here’s a descending chronological list of Tweets I made while developing Michelangelo:

Prototyping Victory! Mocking up a screenshot in GIMP just saved me from writing code I *THOUGHT* I would need. #glass
@nobunagaota
Robert Ota Dieterich
Fun PhoneGap Fact: CSS-declared dimensions for a canvas seem to affect performance more than its tag dimensions. #glass #no_easy_upscaling
@nobunagaota
Robert Ota Dieterich
Ok <canvas>, you've made your point. You're SLOW. I promise not to use you for animation, ok? #glass
@nobunagaota
Robert Ota Dieterich
The story I based on the game design is changing the design itself. Cool feedback loop. I wonder where the point of convergence is? #glass
@nobunagaota
Robert Ota Dieterich
Good t' know: complexity of the underlying DOM object significantly affects the performance of your CSS animations on iPhone. #glass
@nobunagaota
Robert Ota Dieterich
In other words: It's faster to CSS animate an image block than it is to animate a div containing text. Makes sense really. #glass
@nobunagaota
Robert Ota Dieterich
Bit the bullet and switched to a CSS-centric tile implementation. It's not fast, but it's faster than the <canvas> approach. #glass
@nobunagaota
Robert Ota Dieterich
Thank you Google Closure for making Javascript behave more like C++. Yeah I said it. I love my const values, that's why. #glass
@nobunagaota
Robert Ota Dieterich
Hooray for PhoneGap's localstorage implementation! Now I can share data between game scenes on different html pages. #glass #smallvictory
@nobunagaota
Robert Ota Dieterich
Most of my indie game dev takes place on the train or bus to/from work. Kinda gives new meaning to the phrase "mobile development." #glass
@nobunagaota
Robert Ota Dieterich
Okay, okay, I promise this is the last time I completely change my game design. #glass #fifth_times_a_charm
@nobunagaota
Robert Ota Dieterich
Okay, PhoneGap, if OrientationChange events don't work out of the box, I'll live without them. Maybe in version 0.9.6... #glass
@nobunagaota
Robert Ota Dieterich
Google Closure. Javascript Syntax checking: awesome. ADVANCED_OPTIMIZATIONS however may not be worth it. #glass #mistargeted_optimization
@nobunagaota
Robert Ota Dieterich
The ad-hoc nature of Google Closure's documentation makes it tough to answer even simple questions about its extern syntax. #glass
@nobunagaota
Robert Ota Dieterich
Adding characters can go miles towards bringing a game's theme and gameplay together. #glass
@nobunagaota
Robert Ota Dieterich
Loading Media is actually FASTER on my iPod than in the simulator. Not fast enough for lazy loading, but still kinda cool. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
My goal for the Glass project is to make a small, but feature-complete, iOS game with HTML5. And what's a game without unlockables? #glass
@nobunagaota
Robert Ota Dieterich
Writing HTML5 is easy. Writing games is hard. Writing games in HTML5 is... still hard! But am I discouraged? Hell no! #glass #bring_it
@nobunagaota
Robert Ota Dieterich
My phone died and now I have an Android Sirius Alpha. Glass may be going multiplatform sooner than expected. #glass #death-and-rebirth
@nobunagaota
Robert Ota Dieterich
As long as I don't instantiate Media() the iOS music player keeps playing. Custom soundtracks anyone? #glass #phonegap
@nobunagaota
Robert Ota Dieterich
WebView's scroll behavior can be a real pain. Even if suppressed on a top-level div, a child can sometimes cause scrolls. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
Sometimes less IS more! Just dropped some of my animations and now my gameplay feels so much faster and more interactive. #glass
@nobunagaota
Robert Ota Dieterich
Nothing like a warm cat sleeping on your side to help the coding go by ever so much smoother. #glass
@nobunagaota
Robert Ota Dieterich
Lesson learned: you don't need to be a fighting game to benefit from buffered input. #glass
@nobunagaota
Robert Ota Dieterich
It's a relief to find out that, despite what some sites say, playing mp3s through PhoneGap's Media API works on my iPod Touch. #glass
@nobunagaota
Robert Ota Dieterich
Ugh. Relying on JavaScript and CSS animation interplay to manage game object state is an inherently error-prone process. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
Lambda functions can be really, really useful. Though they sometimes make my single-threaded head spin. #glass
@nobunagaota
Robert Ota Dieterich
You can do a lot of cool effects with <canvas>, but drawImage calls on iPod's are just too slow in most cases. #glass #close_but_no_cigar
@nobunagaota
Robert Ota Dieterich
I can write C++ and C# sans reference like no one's business. I am helpless in HTML/CSS without google. #glass #coding_on_the_train
@nobunagaota
Robert Ota Dieterich
Squeezing out gameplay-worthy performance can be a Sysyphian task, but being able to use HTML/CSS for menus is a win. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
CSS-styled button tags with a well-thought out onClick handler make for decent menus in a mobile app. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
Turn-based or time-based? That is the question. #glass #gameplay
@nobunagaota
Robert Ota Dieterich
Stars are terribly overused but, as a result, they provide a great short-hand for advancement in iPhone games. #glass
@nobunagaota
Robert Ota Dieterich
Clever girl, Google Closure. Renaming 'numberOfLoops' and preventing my music from looping. #glass #phonegap #checkYourExterns
@nobunagaota
Robert Ota Dieterich
Did 30 mins of paper prototyping just save me from 2 hours implementing a feature that wasn't going to work? Why yes, it did! #glass
@nobunagaota
Robert Ota Dieterich
As a C++ programmer, my most common CSS mistake is switching '.' and '#' when defining CSS classes. #glass
@nobunagaota
Robert Ota Dieterich
Some nights you're just tired and settle for setting sound effects on buttons instead of writing serious code. #glass
@nobunagaota
Robert Ota Dieterich
Real-time gameplay or turn-based. Hard choice. That's why I chose... both! #glass
@nobunagaota
Robert Ota Dieterich
Set webview.dataDetectorTypes to UIDetectorTypeNone. I haven't benchmarked yet but I'm pretty sure it didn't help perf. #glass #phonegap
@nobunagaota
Robert Ota Dieterich
This guy has PhoneGap game on iOS called Orbium (http://t.co/3VikIII). And it's open-source! Time to get my learning on. #glass
@nobunagaota
Robert Ota Dieterich
For Phonegap on iOS, using ontouchend as your "button pushed" event handler makes buttons feel so much more responsive than onclick. #glass
@nobunagaota
Robert Ota Dieterich
It took some experimenting but I finally have my core gameplay figured out. Now to see how I feel after the caffeine wears off. #glass
@nobunagaota
Robert Ota Dieterich
Ouch. GUIMark3 on HTML5 vs. Flash mobile performance: http://t.co/kf3x1yT Still, designing a game under constraints is good practice. #glass
@nobunagaota
Robert Ota Dieterich
Organizing pages to minimize reflow when you change innerHTML can make a huge difference in performance. #glass #phonegap #less_is_more
@nobunagaota
Robert Ota Dieterich
The 2nd most important screen in the game is the Results screen. It's the place to get the player to say: "Ooh I want more of that!" #glass
@nobunagaota
Robert Ota Dieterich
Creative Commons provides a great resource for images but keeping track of all your BYs and SAs can be a fair bit of work. #glass
@nobunagaota
Robert Ota Dieterich
Speaking of Creative Commons, does anyone have a preferred way to fulfill Share-Alike obligations for modified images? #glass
@nobunagaota
Robert Ota Dieterich
I've made my game turn-based since it's a better experience for gamers who face constant interruptions (commuters & parents, i.e. me) #glass
@nobunagaota
Robert Ota Dieterich
Phonegap canvas: four 96x96 sprite draws, 8 fps on my iPod Touch. Not very promising. Is there any way to make it better? #glass
@nobunagaota
Robert Ota Dieterich
iTunes Connect doesn't let me register a new app without ALL of my submission materials ready ahead of time. Amazingly primitive. #glass
@nobunagaota
Robert Ota Dieterich
Uploaded my first iOS / HTML5 game, Michelangelo (http://t.co/WEGs52TW), to iTunes Connect. And now, I wait...
@nobunagaota
Robert Ota Dieterich
Michelangelo, my iOS / HTML5 puzzle game is In-Review at the App Store. Yippee!
@nobunagaota
Robert Ota Dieterich
And Michelangelo, my iOS / HTML5 puzzle game, has made it through app review. That was a lot faster than I expected. Not that I mind!
@nobunagaota
Robert Ota Dieterich
Just got Michelangelo (available on iOS: http://t.co/GsgaZV5a) running on Android. Except for the parts that don't work, it works fine!
@nobunagaota
Robert Ota Dieterich
Working on an update for Michelangelo (http://t.co/GsgaZV5a). Just switched to a native sound effect implementation. SO much faster. #glass
@nobunagaota
Robert Ota Dieterich
I just uploaded an update for Michelangelo (http://t.co/GsgaZV5a) for app review. If all goes well, it should be available on iTunes soon.
@nobunagaota
Robert Ota Dieterich
Share this Article:
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Print