Daily Drawing Week 2

Art

Here is the collection of daily drawings I did this past week. As I mentioned in the previous post my goal this week was to try out a creativity exercise I had read about that sounded like an interesting challenge. The basic idea was to draw five random starting lines and then see how many original drawings I could create each day given those same lines. It ended up being a lot of fun for me. I’m always amazed how wrapping something inside constraints can provide a unique direction or focus. I found I was really looking forward to each day’s drawing and seeing what I’d come up with. By the end of the week I was quite familiar with the lines. I think my favorite from the series is “Hold On Tight”.

I also created an animation of the five drawings called “Five From Five” as an interesting way to present how all the drawings relate to each other:

You can click on the thumbnails to enlarge them.

Five Random Lines
Here are the starting lines
Yellow Dog
“Yellow Dog” – Oct 10th, 2011
Southwest
“Southwest” – Oct 11th, 2011
Horncordion
“Horncordion” – Oct 12th, 2011
Hold On Tight
“Hold On Tight” – Oct 13th, 2011
Just Keep Swimming
“Just Keep Swimming” – Oct 14th, 2011 
Fall
“Fall” – Oct 15th, 2011
Eggplant
“Eggplant” – Oct 16th, 2011 

For Saturday and Sunday I decided that five days of using the same lines was enough and just drew whatever I wanted. I’m trying to experiment a bit more with light and color as demonstrated in “Eggplant” above and I’m pretty happy with how it came out. I’ve spent so many years mainly drawing in black and white pen or pencil that I’m really excited to finally be pushing my color skills and learning.

Not sure what this week holds for the daily drawings. It was really nice to have some constraints or guidelines so I may have to think of something to provide a bit of structure. We’ll see!

Daily Drawing Week 1

Art

This past week I spent about an hour each morning doing a different drawing. I had read a tutorial by Marcus Hadlock that provided some good tips on how to draw in Flash and was further inspired by encountering his Daily Doodle project where he made a different drawing each day for a year. I thought this sounded like an interesting idea and while I may not do it every single day I do want to try it for a while and see how it goes.

Now I do use a Wacom tablet and I normally do all of my drawing in Photoshop because for whatever reason I’ve never really enjoyed drawing in Flash. I felt I spent most of my time fighting with it in fact. Well it turns out a lot of the problem was just some basic misunderstandings of the brush tool along with also learning some nice simple coloring, shading, and highlighting tricks using a few basic layers.

I corresponded a bit with Marcus over G+ to ask him some further questions about things I saw in his tutorials but then it was time to put my learning into action!

Below are the results of my first week. Six drawings in total since I started on Tuesday. I figure I’ll post the montage once a week on Sunday with the week’s drawings. I do post the daily drawings over on Twitter and G+ though.

You can click on the thumbnails to enlarge them.

Banjo Farmer
“Banjo Farmer” – Oct 4th, 2011
Loquacious Mime
“Loquacious Mime” – Oct 5th, 2011
Focused Frog
“Focused Frog” – Oct 6th, 2011
Red Robot
“Red Robot” – Oct 7th, 2011
The Loneliest Puppeteer
“The Loneliest Puppeteer” – Oct 8th, 2011
Tree Beast
“Tree Beast” – Oct 9th, 2011 

Some of these drawings just came from my subconscious when I sat down with my coffee in the morning and tried to imagine something to draw. A few of them though came from friends when I asked on Facebook for some random character prompts to do some improv. My friends suggested both “Loquacious Mime” and “The Loneliest Puppeteer” and I’m pretty happy with how they came out.  The other interesting fact is that “Banjo Farmer” came from a creativity exercise that Marcus posted about where you draw a random squiggly line and attempt to build a face out of it.

There was another creativity exercise Marcus posted a few days ago where you draw five squiggly lines and attempt to build an entire composition using them. I think as a challenge this week I will be using the same squiggly lines all week long but drawing a different drawing from the same lines each day. I’m excited about this challenge and we’ll see how it turns out!

Korrode – New Game Preview

Game Business Games

A challenging level from Korrode

Korrode is a brand new game that I have just finished. You get to play the part of entropy as a racing rust spot zipping around corroding metal bolts. It’s a level based racer that combines aspects of puzzle and time trial agility games.

My initial seed of an idea for the game was about crossing a 2d Katamari Damacy with Flow. The game has also drawn heavy comparisons to the excellent game Osmos but I had never heard of that game before beta test players started pointing that out. I wanted to explore the fun level design that would occur in a game where the level topology is constantly changing based on your scale.

The game isn’t released yet but I created a video game trailer so players and potential sponsors could get a sneak peek at what it is all about. Sponsors with an account on Flash Game License can also play the game here to consider placing a bid on it.

I’ve worked on Korrode on and off since January of this year. It is the largest game in both scope and time commitment that I’ve developed yet. I was very inspired by some entropy-themed texture photos a good friend of mine (Jeremy P. Bushnell) took from his travels around Philadelphia, Chicago, and New York. He gave me permission to use these photos as the base for a lot of the photo manipulation work I did to create both the UI and the levels for the game.

Grease is the natural enemy of rust.

I also had the pleasure of recording the game’s soundtrack which was a refreshing break from coding. I was able to create 9 unique music loops using the sounds of factories, metal clanging, machines, and other industrial ephemera to build the rhythm tracks. I then composed some simple melodies to go over them. The trailer features a longer version of one of the songs from the game.

The game uses a pretty cool technology from the Playtomic analytic service I use that allows me to embed player replays in the actual highscore data for a level. This means that when a player finishes playing a level their new best time is automatically submitted to the global leaderboards for that level. Then when players view the leaderboards they can actually watch the replays from anyone’s run in the score charts. It’s a great way to encourage competition and allow the players to race each other’s replay “ghosts” after they finish watching the replays. It also provides a built in walk through of sorts if player’s are just curious how other people solved a level in the quickest time.

Watch out for the moving walls!

I’m pretty excited about this game and I really can’t wait to see the replays that top players will generate. I’ve already learned a bunch about the levels I designed by watching the beta testers solve them! The sponsorship process can take awhile though so I have to be patient. I’ve got plenty of other projects to keep me occupied anyway!

 

 

GameLoop 2011

Game Business Games

GameLoop 2011 Begins

I had the good fortune to be able to attend GameLoop in Boston again this year. It was held at the Microsoft NERD Center in Cambridge, MA and about 150 folks attended. This was GameLoop’s fourth year and it continues to draw a great group of participants interested in all aspects of game development–both digital and non-digital. The event is priced ridiculously low for the amount of value you get out of it in both shared knowledge and networking. The $40 ticket price even includes a kick-ass T-shirt, breakfast, and lunch!

GameLoop was founded by Darius Kazemi and Scott Macmillan and they continue to help both organize it and refine its unconference style process.

For those unfamiliar with the unconference term, the gist is that an unconference is a type of conference that self-organizes during the day of the event.

Proposing Session TopicsThe participants of an unconference are active co-creators of the session content. Sessions are proposed in the beginning of the day with attendees gathered in a large room.

This year we all had a chance to say three tags that represented topics we were interested in. There was a 10 second time limit and it only took 15 minutes to get through us all. This helped gauge the potential topic interests in the room.

 

Voting on Session TopicsAfter all the proposed sessions have been written onto large pieces of paper the boards holding them are then moved out to the hallway. Participants then get to vote with 5 individual stickers on which sessions they might want to attend.

This was still a bit of a bottleneck but I felt it worked better than last year. I hope next year they have 3 boards instead of 2 and keep the notes to the top halves of the boards so you can preview the topics from further away.  I also think putting more space between the boards will help spread out the crowd a bit.

Curated Final ScheduleAfter we all voted the organizers then curate the most popular sessions to form the schedule by distributing or combining the topics in an intelligent manner to get good coverage throughout the day. I thought this curated approach worked really well this year. Each slot had something I could find that interested me.

 

 

Round Table SessionSessions tend to be a round-table conversation-based style where everyone can have a chance to contribute to the topic being discussed. The session leader is whoever proposed the topic and moderators are available to help out just in case things veer too far.

This whole process works surprisingly well! There is even a brief wrap-up session at then end of the conference where the whole group is able to provide feedback so that iterative improvements to the process can made for next year’s event.

The three tags I announced at the beginning of the event this year were web, mobile, and small studio business.  I then attended sessions that largely related to these topics. I enjoyed two different sessions related to indie business and marketing lead by Ichiro Lambe and Leo Jaitley of Dejobaan Games. I find a lot of useful stories and information in what those two have to share about their long term experiences with being an independent game studio that has released a lot of very original games over the past twelve years. The sessions they lead were titled Platforms That Make Indies Money and Staying in Business as an Indie Forever. Other useful contributions came from participants like David Carrigg of Retro Affect and Alex Schwartz of Owlchemy Labs. They all had experiences to share and it was very useful to hear what various studios are doing to stay in business and try and make money from their games.

I also attended a more tech oriented session lead by Sean Flinn of GameSpy Technology (thankfully a long term GameLoop sponsor) about online analytics, multiplayer, and distribution needs of game developers. I have a very big interest in game analytics and currently use the Playtomic service but it is always good to keep an eye on the various technologies out there. GameSpy Technology doesn’t currently have an ActionScript API but I was able to share some of my needs, concerns, and requirements with them about being a game developer on the web.

Of the two final sessions I attended, one was a session on Building a Personal Brand by Kwasi Mensah of Ananse Productions and the other a session on Prototyping by Caleb Garner of Part12 Studios. I find these conversation style sessions so helpful to hear other game developers stories and experiences. Afterward you can approach and followup with someone based on what you heard them talking about in the session and that is an excellent chance for further building connections.

After a long but incredibly rewarding day about 70 of us headed over to Cambridge Brewing Company for dinner and locally brewed beer. A perfect way to end the day!

Once again I would like to thank the founders of GameLoop–Darius Kazemi and Scott Macmillan. I think the following photo may hint at where they get all their incredible energy from!

Nyan Scott and Nyan Darius

All photos used by permission of Michael Carriere.

Using Playtomic Analytics In Your Flash Games

Tutorials

Playtomic Game Analytics and Services for Casual GamesPlaytomic is a free game analytics service I have been using in my Flash games for almost two years now. It provides a real time tracking platform not only for Flash games, but also for games made with HTML5, iOS, and Unity.

Playtomic is a great way to understand how playertesters are playing your games during the development phases of your game and then to further study how your game is being played and spread around the world once you release it.  Beyond the real time analytics tools it also offers global leaderboards, heatmaps, custom game data, and level sharing APIs.

I can’t recommend Playtomic enough as it has really had a large and beneficial impact on the way I approach my game development, playtesting, and publishing. I’m not the only one enjoying Playtomic either–over 2,000 developers are currently using the service to track over 3,000 individual games, and logging an amazing billion combined real time events per day!

Playtomic Analytics Tutorial Demo

TUTORIAL

This tutorial will focus on the basics of getting your account setup with Playtomic and getting the basics of the analytics working in your game SWF.  I’ll be using the latest Playtomic API version 3.15 for ActionScript 3.0 (though Playtomic does support ActionScript 2.0 as well.) I’ll also be using the Flash IDE to create the game project but the code I’ll be demonstrating will work basically the same if you’re not using Flash. I’ll provide the source for the demo above saved as a Flash CS4 project in case you haven’t upgraded to the latest version yet.

 REGISTER FOR YOUR ACCOUNT AND CREATE YOUR FIRST GAME

Register for PlaytomicRegister:

First step is to simply register your account on Playtomic. This is pretty basic and you don’t even have to wait for an email for your account to activate.

 

 

Create Game ScreenCreate First Game:

The next step is to create your first game in the system. I’m just using a ‘Test Game’ for the purposes of this tutorial.  The important part is to hit the two radio buttons. Select ‘Casual/mobile game’ for ‘Game Type’ and ‘Web’ under the ‘Flash’  platform area. Then just click the ‘Create Game’ button and the system will bring you to the game overview screen for API setup.

 

New Game API OverviewFirst Game API Overview:

You should now be looking at the API information for the game you just created. The most important information here is the game credentials area that lists your SWFID and GUID.  You should keep these numbers private since they are the way the API will communicate from your game to the Playtomic system.

The other important areas are the documentation and downloads areas. I’ve marked everything on the screenshot to the left that you can click to enlarge. You can get to this screen by clicking on ‘API Setup’ in the vertical nav menu at the left when you are logged in on the Playtomic website.

Download the Tutorial:

Normally you’ll click on the download link for the latest Playtomic API zip file on the Playtomic website. You’ll then extract the contents of the zip and find the folder called ‘Playtomic’ inside the folder called ‘gameapi-as3’.  You’ll want to copy the ‘Playtomic’ folder into the root folder of your game project so that the folder is at the same directory level as your FLA file.

This time though I’ve already included the latest Playtomic API within the tutorial download. At the time this tutorial was written that was version 3.15 for ActionScript 3.0.

You can download the tutorial here. I saved the FLA as a Flash CS4 FLA for people using older versions of Flash still.

Extract the tutorial zip and then open up both TestGame.fla and TestGame.as in the Flash IDE.

I’m only going to point out the most important parts from the source. The tutorial TestGame.as source file itself is heavily commented and should be fairly self-explanatory. This tutorial also assumes you know the basics of ActionScript 3.0.

In order for everything to work you are going to need to have already setup your new game on the Playtomic website from the instructions further above. If not go ahead and do that now because you’ll need your unique SWFID and GUID to plug into the TestGame.as config area.


// Playtomic API constants 
// NOTE: CHANGE THESE TO MATCH YOURS OR IT WON'T WORK!
//
// SWFID from Playtomic API Setup screen
private static const PLAYTOMIC_SWFID:String = "xxxxxxxxxxxxxxxxx";

// GUID from Playtomic API Setup screen
private static const PLAYTOMIC_GUID:int = xxxx;

Before you can use the API you'll need to import the Playtomic classes. You'll see I do that near the top of the source file with the other standard Flash imports.


// import the Playtomic API 
import Playtomic.*; 

Custom Metrics

You need to init the Playtomic API as soon as possible in your game code and definitely before you call any of the Playtomic services. I usually do this with an init function of some type called during my FLA Document class constructor phase.

 

 


// Init the Playtomic API as soon as possible and
//   before you call any other Playtomic services!
private function init():void {
  // Initialize the API by logging the view
  //   this registers a 'view' on the server
  Log.View(PLAYTOMIC_GUID, PLAYTOMIC_SWFID, root.loaderInfo.loaderURL);
}

While we have now logged a 'view' above we want to track how many times the game will actually be played during that view session. In other words there should be more 'plays' of your game than 'views'. If not, the view to play ratio is a great indication that your game could use some improvement!

I typically track the 'play' event when my gameplay assets are being instantiated.


// Play the game
private function playGame():void {
  // Registers a 'play' event on the server. There can be multiple 'play' events per 'view'
  Log.Play();
  // do one time setup for game
  setupGame();
}

Custom Metrics

Another very easy and powerful thing to do with Playtomic is to track custom counter metrics. I have included an example in the tutorial. Whenever the player clicks on the 'Credits' button on the main menu we track a 'ViewedCredits' event. You can use these events to track all sorts of handy data. I usually track common things like every time the credits are viewed, the instructions are viewed, the sound or music is toggled on or off, how many times the game is restarted or paused. Basically any handy data point you'd like to gather to start understand how players interact with your game or the menus surrounding your game.


// Listens for mouse click on credits button
private function creditsButtonClickListener(event:MouseEvent):void {
  // Track a custom metric on the server so we know a
  // player viewed the credits screen
  Log.CustomMetric("ViewedCredits"); // metric, names must be alphanumeric

Level Metrics

There are many other types of metrics you can track too. I like putting in tracking for average score so that even if players aren't submitting a score I can see how players are doing with the game. You can do this with a level average metric call. When your game doesn't have individual levels you can just feed in the string 'Game' (or whatever you want) that represents the entire game and not a specific level.

In the tutorial I track a level average metric when the player hits the 'Quit' button.


// Quit game button click listener
private function quitGameButtonClickListener(event:MouseEvent):void {
  // Track the current score as a level average metric event
  //   You can track averages for specific levels or the entire game.
  //   Here the string 'Game' represents the entire game not a 
  //   particular level string.
  Log.LevelAverageMetric("Score", "Game", score);	

That's about it! The Playtomic website documentation is pretty decent and the community forums on the site are starting to mature a bit so that you can often get help from a question posted up there before too long. Once you integrate Playtomic into your own game you'll start thinking up all kinds of great uses for it. I've used the global leaderboards and level sharing APIs and will start experimenting with the heatmaps soon. I will use this base tutorial code to write up a few followup tutorials on Playtomic soon.

Let me know if I can improve this tutorial and if you have any questions at all!

[DOWNLOAD FLASH CS4 VERSION OF TUTORIAL]