Docstoc

PHP-Game-Development-In-Flash and PHP

Document Sample
PHP-Game-Development-In-Flash and PHP Powered By Docstoc
					  Game Development in Flash & PHP




Presenter: Tianyang (TYLER Projects)‫‏‬
For PHP User Group 21-02-2008
                Overview
FLASH
  Embedding

  Preloaders

  Communicating with PHP

  Security




PHP
  Database

  Security



Q&A
           Embedding Flash
<embed
  src="file.swf"
  width="300"
  height="300"
flashvars="myvar=99&myvar2=200"
/>

Eolas and XHTML problems

- Use free SWFObject javascript to create embed
code
                    Preloader
Large files – Important to show download progress

function loadClient() {
  var loader:Loader = new Loader();
  configureListeners(loader.contentLoaderInfo);
  var request:URLRequest = new URLRequest(url);
  loader.load(request);
  addChild(loader);
}
function configureListeners(dispatcher:IEventDispatcher):void {
  dispatcher.addEventListener(Event.COMPLETE, completeHandler);
}
function completeHandler(event:Event):void {
  removeChild(loaderClip); // Remove preloader progress clip
}
IOErrorEvent.IO_ERROR // File not found etc...
HTTPStatusEvent.HTTP_STATUS // 404 error etc...
ProgressEvent.PROGRESS // Update progress bar
Misc other events: Event.UNLOAD, OPEN, INIT etc...
        Communicating with PHP

var req:URLRequest =
new URLRequest(“submit.php”);

var variables:URLVariables = new URLVariables();

variables.op = "getResource"; // Data to send
req.data = variables;
req.method = URLRequestMethod.POST;

var loader:URLLoader = new URLLoader(req);
loader.addEventListener(Event.COMPLETE,loadInfoHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR,ErrorHandler);
        Communicating with PHP



function loadInfoCompleteHandler(event:Event):void {
 var xml:XML = new XML(event.target.data);
 var tobj = xml.elements('myoutputlist');
 mydata = xml.elements('myoutputlist')[0].attribute("var1");
}
                   Security

  Client-side
  Not secured

  Variables easily changeable via memory editors

  Single-player games vs Multi-player

  Decompiler




Solution
  Obfuscation

  Manipulating variables

  Server-side processing
           Storing Player Data
Data to store:
  Highscore List

  User IDs, Name

  Resources: Cash, Items etc...

  Game variables




Table Types
  Static

  MyISAM vs InnoDB

  Memory



Do query caching for highscore

Proper indexing

                     Security



Clean Inputs:
 U
  se intval() for all integer values

 F
  ilter special characters for strings
              Q&A



             To show:
      Demo from battlestations.
 Contact: contact@mobileweapon.net
              Try the game:
http://apps.facebook.com/battlestations