Menu

Tag Archives: AS3

Post navigation

In late 2013, I started working at Deluxe Entertainment in Burbank and was debugging several versions of a LAMP stack application with Linux, Apache, MySQL, PHP as well as AMFPHP and Flex. The project was Media Recall, a digital media storage and cataloging system for several major clients including Harpo (Oprah Winfrey), Johnny Carson, Martha Stewart Online, and more. Later on I moved into tools development for the Operations team and created this application. Several of the tools being developed by the team had an XML format for the forms, and creating that XML was becoming a large task. My project was to simplify that by creating a visual tool to create and modify the XML. This tool was also a LAMP stack application, in which my focus was mainly the Flex and PHP.

In 2011, I joined the team at MindJolt Inc., now SGN. The founders of MySpace had created this game company who’s main product was the MindJolt App on Facebook. It’s a game portal with thousands of Flash based games, and runs in Facebook as well as a stand-alone site. At one point I believe it had over 13 Million users, and chances are if you play games on Facebook, you’ve seen it.

Flash API
To allow the Flash games to communicate with the MindJolt App, they all load another Flash file, which is a bridge to the back end and other non-Flash code. The MindJolt Flash API was my main project for quite some time. It dealt with Ads, tracking, user information, settings, and much more. As the MindJolt stack was constantly being improved, changes to the Flash API were always in need.

Games on Mindjolt
I also updated the source code for several of the Flash Games. As new features were introduced in the API , some of the games were modified to take advantage of them. The games you see in the video above are some of the ones I worked on.

Big Games
Later on, I worked on several other games outside of the Mindjolt app such as Panda Jam, Jewels of the Amazon, Bubble Atlantis, as well several enhancements via the Facebook and PlayerIO APIs.

C#
Some other projects included C# work as well. One was to convert a Flash tracking API swf to a C# DLL for Unity projects. Another was to process user information and statistics data for PlayerIO (now the Yahoo Games Network). The PlayerIO SDK has both an ActionScript and C# API.

In 2009, I worked on some fun sites for Disney over at Midnight Oil Creative. This Jonas Brother’s site was an all Flash page rendering system, with content externalized in XML. The task at hand was to retrofit a Hannah Montana site into the Jonas Brother’s site. The engine had a navigation bar at the top, and several panels of content in a page – used to make fluid, animated, lively sites. Using that system, I added several specialized panel widgets and an animation delay system in as3 and xml. This made it easy for graphics designers to add and update assets, as well as control the timing. As I added more capabilities and features, it was easier to build sites in XML by re-using the engine. This engine became the base code for other projects I worked on, were it evolved even further.

The N.B.T, Next Big Thing was the new version of the flash/xml page rendering system used to build Jonas Brothers and Hannah Montana sites. By this time I had added several panel components to the engine and made some new ones for media elements – audio, images, and video.

In 2009, I did a contract to build the Pepsi Superbowl site. Conceptualized and designed by The Famous Group, I added Flickr, YouTube, and Gigya APIs in ActionScript, as well as an RSS feed reader. The site would scale to any browser window size and randomly render from a list of Flickr images, as well as present a YouTube playlist of commercials for the Pepsi Superbowl 2009 campaign called Refresh Everything.

This highly immersive movie website was built by Heavenspot for Disney in 2010. During that time, Disney hired me to assist with technical integration and development of the site. For example, the developers at Heavenspot needed a persistent storage medium for the user’s avatar data – which had to fit into Disney’s enterprise infrastructure. Web site traffic was extremely high at Disney (some of the highest on the internet), and the use of CDNs and clouds were critical to keep up with the demands. To solve the problem, the Java devs built a back end service to fit the requirements for performance and security. I built the as3 components to work with that service, and assisted Heavenspot with integrating into the site. I also assisted with restructuring the asset locations for CDN deployment , as well as some promotional projects such as a sweepstakes component.

Before the big site, I worked on making this teaser site which was a placeholder. I took a Flash CS5 demo animation and made it into this interactive version for displaying promotional video and image content.

In 2012, I had a dream of making a successful slot machine game on Facebook. I spent about 6 months on it during my off-time from work. I even formed a Delaware company to own the game – called Mookie Games Inc.

Concept

The idea of the game was to have a slot machine where the slot items were your friends. It used the Facebook API to grab their profile pictures and basic info about them. You could also launch their profiles from the pictures.
You were given a certain number of coins to begin with, and over time if you ran out, you could purchase more. You could adjust your bet, and the number of pay lines you wanted to bet on. Increasing the pay lines also increased your chances of winning, but increased your wager.
Like real Vegas slot machines, logic was in the game to control your odds of winning, and eventually lead you to making a purchase. I also added lots of free play options such as getting bonuses for each friend of yours that played the game, and how often you and your friends played. Other features such as posting screen captures of your wins, messages on your Facebook wall, and bulk invitations to friends were utilized to make it more viral.

Cloud Deployment

Hoping the game would get used by millions, I decided to learn how deploy cloud based apps using server stacks, virtual machines, load balancers, and distributed databases. I began with Facebook’s default host, Heroku, and then ended up on Amazon Web Services (AWS). I also did research and experimented with others such as App Fog, Google App Engine, and Micorosft Azure.
I picked AWS because of the autoscaling feature. The game was deployed using Git, which would get pushed up to EC2 Virtual Machines behind a load balancer. If the game got heavy usage, more EC2 VMs were automatically launched to handle the load, and then terminated when usage decreased.

Deployment was similar on Heroku, except for the Auto Scaling. I could switch back and forth between Heroku and AWS with the way I had the app set up, using Environment Variables and PHP. I just had to change the url settings on Facebook.

CDN

All Flash swfs, images, and sounds were uploaded to an AWS S3 Bucket. I set up an AWS Cloudfront distribution which used that bucket to copy and cache local versions around the world. This was important as I was doing Facebook advertising for my game in several other countries, and I needed the game to have good performance world wide.

Databases

Both AWS and Heroku apps were using a cloud Database from a company called Xeround ( no longer in business ). An alternative today could be ClearDB. This is basically a cloud hosted mysql endpoint that has synchronized copies hosted around the world, for better performance. Much of the games features required the use of SQL queries, so I chose MySQL over those no-SQL alternatives.

Serverside

The server side language for this app was PHP. It used the PHP APIs for Facebook and AWS S3, but most of the PHP was in AMFPHP service classes to handle database operations and communication with Flash. A gambling transaction api was created in the process that had 2 way encryption between the PHP and Flash, and prevented game cheating.

Front End

The Flash App was my largest ActionScript project ever. I proudly architected some clean reusable MVC OOP code that made it easy to invent, integrate, and update features. The graphics assets were from Flash CS6 and published as SWCs, and Flash Develop was the main IDE for coding.

The End

Even though users were making purchases in the game, it never hit a point where it became profitable. Also, a company in the UK claimed the game’s name was too similar to theirs. Facebook never saw a resolution to the dispute and simply shut down the game. All in all, at its peak, the game had over 25,000 users, and was a joy to develop. It allowed thousands of retirees to gamble on the cheap while seeing pictures of their loved ones 🙂

The ad that pops up over the Facebook Flash game Panda Jam are actually HTML / CSS / JavaScript / and ActionScript all working together. Panda Jam has over 1 million players world wide and monetizes on each ad shown. Inter-level ads display in between levels of the game and use Adap TV’s JavaScript API. For the Ad Sales team, I programmed it with a complex set of factors of how and when to show ads, such as:

no ads until the 2nd round

don’t show more than 1 ad within a minute

no ads for users who made a purchase in the past

no more than two ads per game

restrict ads to certain geographic regions determined by Facebook API

Ad server errors would get trapped and bypass the ad, so the user would not be affected

These settings were all configurable via an xml and may have changed since. Once the ad completes, the game resumes. Using JQuery and the Adap TV JavaScript API, PlayerIO API, and ActionScript’s External Interface, this system was then integrated into other games.see it

Medsn’s E-Learning Platform

Within the Microsoft Office suite of applications is a powerful automation tool. They are called Macros when you look through the menus, but are far more powerful than Macros in other applications. You can customize the macros in the Visual Basic programming language. It gives you deep access into the functionality of MS Office applications.

For several years, I architected and maintained the E-Learning platform for Medsn, now Indegene. It was a Flash application to navigate through Flash content, and supported external data sources for text, audio, and quizzes – as well as several other features such as AICC and SCORM tracking. Clients included many of the major pharmaceutical companies as well as medical equipment manufacturers. Here are some samples of the courses I programmed: Alcon Post Test Migrain Patient Simulator Over 100 training courses were developed for this platform and automation was key to get the content writers work into the system. The “parser” was a tool I developed to take a MS Word doc with a predefined table structure, fill it in with content, and then produce the data sources for the training course. This rapid conversion process allowed the writers to iterate and customize content freely.

Script Template

The Script Template is a combination of a Word document template, macros written in VBA ( Visual Basic for Applications ), and forms such as those available in Visual Studio. You can edit macros right from Word, Excel, PowerPoint, or Outlook and have a Microsoft quality IDE.

Macro Editing Environment in Microsoft Word

The automation of Microsoft Office applications is very powerful when combined with a language like Visual Basic.

Back in the early 80’s when I was a young teen, my dad bought me my first computer. It was a Commodore 64 sporting a [then] impressive 64K of memory ( compared to 16 million K in a 16GB computer today ). When you powered it on, you saw a command-line / Basic language interpreter. As a result, the first thing I learned was how to program in Basic. And the first program I wrote was generating sound frequencies, like say… 230hz.

For years I was dissapointed that ActionScript never had this ability, until Adobe finally released it in Flash Player 10. Generating raw frequencies is nothing exciting unless you want to annoy someone or their dog, but it’s the building block to something more exciting – synthesizers, drum machines, sequencers, and electronic music. I’ll post some links later of some developers who have taken this to a whole new level.