Saturday, 26 November 2011 0 comments

Corona SDK development on a PC

If you had read my post on Mac development tools you will probably have a good idea of a way forward. For instance I went for TextMate with a really handy Corona Bundle to allow auto complete within the editor on my Mac.

I, like a lot of people, mix between Mac and PC. I have only been using a Mac for about two years and the rest of my career has been very much PC based. This is one of the beauties of Corona in that it can be installed and worked on on both devices. I tend to store my files on DropBox and switch between my machines therefore my work in progress is always to hand.

Unfortunately, TextMate isn't available for PC so instead I use Notepad++ and a very handy plugin which gives predictive autocomplete.

To setup the plugin obviously first install Notepad++ and download the plugin. Then just drop the file into: YOUR_NPP_DIR\plugins\APIs folder. If you haven't enabled auto complete in notepad, you can set those options in Settings>Preferences>Backup/Auto-Completion. Also make sure you have checked: Enable Auto-Completion on each input, function completion, and Function parameters hint on input. I had to restart Notepad++ for the changes to take effect.

However, once done you have a very handy and FREE Lua editor with Corona references.

Monday, 21 November 2011 0 comments

The project - 100 hours completed

The first of my mini milestones has been achieved and that is hitting the 100 hour mark.

May not seem like much but my goal has been to mentally set mini goals to ensure I stick with it.

The first 100 hours have been tough. I probably haven't made it easy of myself but I started this project just a week after the birth of my second son so juggling this with a newborn has been tough. But of course that is also the motivation.

Those fragmented nights and early mornings have also been to the advantage of the project and being awake for some 20 hours in a day certainly helps. So much so that of my 936 hour target for the first year I am already about 20% ahead of schedule which is mostly due to working on it most days. Again little and often.

So what I have achieved in this first 100 hours:
  • Prototyped against GameSalad
  • Prototyped against Cocoa
  • Prototyped against Corona SDK
  • Chose to go with Corona
  • Worked my way through game design theories in The Art of Game Design: A book of lenses by Jesse Snell
  • Started working with Lua and Corona and found it very alien. Distinctly disliked the lack of integration in an IDE and to devices that XCode provides, for example. However, a couple of tools such as Corona Remote by Matthew Pringle as well as TextMate with the Corona plugin has made it a little more comforting
  • Started my first attempts at physic and game engine logic with some success but looking pretty ugly
  • Working on three game concepts and designs
  • Writing blog entires (1000 page view in first month)
  • Tweets (25 followers)

Phew!!! On paper, or blog, that looks quite impressive and after all that is the point of keeping a blog while on this journey to keep motivation and in the hard times see just how far I have come.

So on reflection things are going pretty well. I am ahead of schedule in terms of hours applied a day despite the new born baby and long working weeks in my 'day' job.

The focus over the coming hours, days and weeks is to apply the iterative prototyping approach that the lenses book recommended to the point I am comfortable with the tools, programming language and game concepts.
Thursday, 17 November 2011 0 comments

Corona SDK Device Testing Tips

Having spent a couple of days working with Corona SDK my first challenge with it was how cumbersome it was to compile to a device. I admit at this point I am only on the free version but the concept of remote builds has never sat well with me, what happens if my internet connection goes down?

That aside, because I could pay to upgrade and get faster builds, the one thing which was proving a bind was the way to get the app onto the device to test. The steps to do this are:
  • Change to device build in the Corona Simulator
  • Wait for remote build to connect and build your solution and create compiled app
  • Connect device to machine
  • Open Organiser and drag app file to device and into Applications folder
  • Test
This becomes very laborious when its simple things you want to test regularly such as accelerometer and physics development.

Because I have done some work with XCode in the past I had become very used to plugging in my device and it all compiling nicely to device without any manual steps. I feared for my long turn future with Corona SDK if this was the development / testing cycle.

Thankfully tonight I came across a little gem. That little gem is Corona Remote by Matthew Pringle, an incredibly handy remote accelerometer app.

The premiss is that because the Corona simulator can't simulate the accelerometers data the app will do this for you by moving the device around as normal. The coronaremote app connects via your WIFI connection to your working machine's ip address and an open port of 8080 (check you firewall is open). All you then have to do is include the remote.lua file within your folder and add the following code within your app:

-- Load The Remote
local remote = require("remote")

-- Start The Remote On Port 8080
remote.startServer( "8080" )

-- Start The Compass ( if you want to use it )

-- Get The Latest Accelerometer Values
local function updateAccelerometer()

    -- This Runtime Listener Is An Example Of How To
    -- Access The Remote You Can Query remote.xGravity
    -- Or Any Other Value From Anywhere In Your Application

    local xGravity = remote.xGravity
    local yGravity = remote.yGravity
    local zGravity = remote.zGravity
    local xInstant = remote.xInstant
    local yInstant = remote.yInstant
    local zInstant = remote.zInstant
    local isShake = remote.isShake
    -- Only Use If Compass Activated And Running v1.1 Or Later
    local magnetic = remote.magnetic

    -- Print xGravity To Terminal
    print( remote.xGravity )


-- Add Enter Frame Listener
Runtime:addEventListener( "enterFrame" , updateAccelerometer )

With a valid connection the simulator picks up the accelerometer data and reacts and simulates to your devices movements, magic!!

The app can be downloaded via App Store and worth every penny.
Sunday, 13 November 2011 0 comments

Essential Mac apps for Corona development

Saw an excellent forum entry on Corona about apps to aid development. These are consolidated as:

Corona Project Manager - $74.99
Corona Project Manager is for anyone who develops mobile apps using Corona® SDK. Drag in a project folder, click Launch, and it's up and running in the simulator. It manages all the projects and assets (source code files, graphics, audio files, etc.) that go into your app so you can quickly switch from one to another, swap out assets, and just generally have a smoother workflow.

TextMate - $55
TextMate is my favorite text editor! BBEdit is good too, just a little pricey

Corona SDK bundle for TextMate - FREE
This TextMate bundle was recently released and makes development SO much quicker!

Pixelmator - $59
A great image editing alternative to Photoshop, with lots of filters, layer support, web export, and much more!

Sketch - $40
A vector drawing alternative to Adobe Illustrator. This developer (Pieter Omvlee) is awesome! He released a new version today 1.0.5 which had a few reported bugs. He released 1.0.6 within an hour that fixed them all!!! That's what I call amazing support! I highly recommend this app to anyone developing graphics, icons, splash screens, etc for apps - especially games. Most, if not all, of these apps have free trials.

Zwoptex - $24.95
Sprite sheet creator. This developer has been working very hard to make the app compatible with Corona Game Edition.

filewrangler - $15
This app is very helpful for renaming batches of files - which you'll be doing often if you create a Corona app with dynamic image resolution.

ImageOptim - FREE
This is a nice image compressor - works well on PNGs if you disable OptiPNG and AdvPNG. You can also use jonbeebe's "posterize" trick in Pixelmator or Photoshop.

iShowU HD - $29.95
iShowU HD is a very slick screencast app that can be used for making demo reels for your app or game.

ColorSchemer Studio 2 - $49.99
A nice app to build color combinations with a lot of tools to compare, compliment, and contrast colors. They even have a community driven color scheme gallery to download free color schemes into the app.

WireTap Studio - $69
Not the cheapest or the best audio editor but this one lets you select any input (even specific application audio) on your Mac to record audio. It also has a basic built-in editor.

gedit - FREE
A text editor

Daz Studio - $230+
Easy way to download 3D artwork and render it as 2D images for apps

Are there any others that you are using in your game development?

Game Design - A Better Understanding

I've made a conscious effort to put the hours into the project the last few days. If you read my first post on the subject of game design, Game Design - a structured start, you would know I was working my through the The Art of Game Design: A book of lenses by Jesse Schell. What an eye opener!! Going into this project I didn't appreciate the complexities involved in game design and what I would need to consider. Having made it out the other side I am more inspired and focused than I was when I started the book.

For you reference here are the remaining topics / lenses that the book covered:
  • Lens #34: The Lens of Skill vs. Chance
  • Lens #35: The Lens if Head and Hands
  • Lens #36: The Lens of Competition
  • Lens #37: The Lens of Cooperation
  • Lens #38: The Lens of Competition vs. Cooperation
  • Lens #39: The Lens of Time
  • Lens #40: The Lens of Reward
  • Lens #41: The Lens of Punishment
  • Lens #42: The Lens of Simplicity/Complexity
  • Lens #43: The Lens of Elegance
  • Lens #44: The Lens of Character
  • Lens #45: The Lens of Imagination
  • Lens #46: The Lens of Economy
  • Lens #47: The Lens of Balance
  • Lens #48: The Lens of Accessibility
  • Lens #49: The Lens of Visible Progress
  • Lens #50: The Lens of Parallelism
  • Lens #51: The Lens of the Pyramid
  • Lens #52: The Lens of the Puzzle
  • Lens #53: The Lens of Control
  • Lens #54: The Lens of Physical Interface
  • Lens #55: The Lens of Virtual Interface
  • Lens #56: The Lens of Transparency
  • Lens #57: The Lens of Feedback
  • Lens #58: The Lens of Juiciness
  • Lens #59: The Lens of Channels and Dimensions
  • Lens #60: The Lens of Modes
  • Lens #61: The Lens of the Interest Curve
  • Lens #62: The Lens of Inherent Interest
  • Lens #63: The Lens of Beauty
  • Lens #64: The Lens of Projection
  • Lens #65: The Lens of the Story Machine
  • Lens #66: The Lens of the Obstacle
  • Lens #67: The Lens of Simplicity and Transcendence
  • Lens #68: The Lens of the Hero’s Journey
  • Lens #69: The Lens of the Weirdest Thing
  • Lens #70: The Lens of Story
  • Lens #71: The Lens of Freedom
  • Lens #72: The Lens of Indirect Control
  • Lens #73: The Lens of Collusion
  • Lens #74: The Lens of the World
  • Lens #75: The Lens of the Avatar
  • Lens #76: The Lens of Character Function
  • Lens #77: The Lens of Character Traits
  • Lens #78: The Lens of the Interpersonal Circumplex
  • Lens #79: The Lens of the Character Web
  • Lens #80: The Lens of Status
  • Lens #81: The Lens of Character Transformation
  • Lens #82: The Lens of Inner Contradiction
  • Lens #83: The Lens of The Nameless Quality
  • Lens #84: The Lens of Friendship
  • Lens #85: The Lens of Expression
  • Lens #86: The Lens of Community
  • Lens #87: The Lens of Griefing
  • Lens #88: The Lens of Love
  • Lens #89: The Lens of the Team
  • Lens #90:The Lens of Documentation
  • Lens #91: The Lens of Playtesting
  • Lens #92: The Lens of Technology
  • Lens #93:The Lens of the Crystal Ball
  • Lens #94: The Lens of the Client
  • Lens #95:The Lens of the Pitch
  • Lens #96:The Lens of Profit
  • Lens #97: The Lens of Transformation
  • Lens #98: The Lens of Responsibility
  • Lens #99: The Lens of the Raven
  • Lens #100: The Lens of Your Secret Purpose
This book has given me a real dip into a lot of areas that I may never had considered. That said it doesn't specifically tell you what you need to know but more question what you have done. Its not a book of ideas, you need to bring those but what it should do is cement those into something better.

Again, if you recall from the previous blog I mentioned I was to create a check list document to aid me and funny enough one of the topics of this book was that there isn't such a thing as a master document. My intention is to evolve my design document over the next couple of weeks and months as I start developing and prototyping. As the book drums home a lot the art of design and game development is one of the loop of iteration to ensure that issues or challenges are ironed out or overcome in small manageable packages.

Onwards and upawards!
Sunday, 6 November 2011 1 comments

Corona SDK: Advantages and Disadvantages

Found a very good discussion on the advantages and disadvantages to the Corona SDK on Quora. Worth a read as there are some good external links on it also with further insight.

Still think I have made the right decision.

Saturday, 5 November 2011 0 comments

Game Design - A structured start

The lack of blogging this week has been due to child illness but mainly due to the fact I am a very slow reader!

The focus of my attention during this week has been to give myself a good grounding in the principles of game design rather than diving head first in to a few ideas that I have. Tempting as it is to just do this I feel I will be no better equipped than i have been in the past to succeed and stick with it without structure.

This very structure is what drew me to the book I am working my way through and that is the The Art of Game Design: A book of lenses by Jesse Schell.

I'll be honest, when I started this project I thought I had a lot of good ideas and that I just needed time to fulfill them. However, from having started to make my way through this book I realise just how involved game design is and those that succeed aren't purely luck.

What I have like about this book is the way that it is structured. As the title suggests its a book of lenses. What this mean is that using any of the lenses proposed in the book to view your idea and question its depths and values. Not all lenses are applicable, necessarily, to your game design but it can at least provide a check list to ensure you have considered most things.

Topics covered to date are subjects such as balance, rewards, demographics, cultures to name a few. To be more specific these are the lenses which I have read through so far within the book:
  • Lens #1: The Lens of Essential Experience
  • Lens #2: The Lens of Surprise
  • Lens #3: The Lens of Fun
  • Lens #4: The Lens of Curiosity
  • Lens #5: The Lens of Endogenous Value
  • Lens #6: The Lens of Problem Solving
  • Lens #7: The Lens of the Elemental Tetrad
  • Lens #8: The Lens of Holographic Design
  • Lens #9: The Lens of Unification
  • Lens #10: The Lens of Resonance
  • Lens #11:The Lens of Infinite Inspiration
  • Lens #12:The Lens of the Problem Statement
  • Lens #13:The Lens of the Eight Filters
  • Lens #14: The Lens of Risk Mitigation
  • Lens #15: The Lens of the Toy
  • Lens #16: The Lens of the Player
  • Lens #17: The Lens of Pleasure
  • Lens #18: The Lens of Flow
  • Lens #19: The Lens of Needs
  • Lens #20: The Lens of Judgment
  • Lens #21: The Lens of Functional Space
  • Lens #22: The Lens of Dynamic State
  • Lens #23: The Lens of Emergence
  • Lens #24: The Lens of Action
  • Lens #25: The Lens of Goals
  • Lens #26: The Lens of Rules
  • Lens #27: The Lens of Skill
  • Lens #28: The Lens of Expected Value
  • Lens #29: The Lens of Chance
  • Lens #30: Lens of Fairness
  • Lens #31: Lens of Challenge
  • Lens #32: Lens of Meaningful Choices
  • Lens #33: Lens of Triangularity
There are some 100 lenses so I have a while to go. I probably see this being the focus of my attention for the next couple of weeks as i'm not sure if you are like me but I dont retain information. For that reason once I have finished reading the book I plan to build a structured checklist document to use against all my future games on this project to ensure I have considered everything.