Andrzej Mazur • @end3r • Enclave Games
XI Ogólnopolska Konferencja Inżynierii Gier Komputerowych
Siedlce, 11-13 kwietnia 2014
Niezależny twórca gier HTML5, programista JavaScript
Programowanie: Andrzej Mazur | Enclave Games
Grafiki: Robert Podgórski | BlackMoon Design
Przeglądarka i edytor tekstu
Web Audio API!
Cache przeglądarki - pomocne narzędzia, np. localForage
"permissions": {
"contacts": {
"description": "Required for autocompletion in the share screen",
"access": "readcreate"
},
"alarms": {
"description": "Required to schedule notifications"
}
}
WebTelephony, Vibration API, WebSMS, Idle API, Screen Orientation, Settings API, Power Management API, Mobile Connection API, TCP Socket API, Geolocation API, WiFi Information API, Device Storage API, Contacts API, Mouse Lock API, Open WebApps, WebBluetooth, Network Information API, Battery Status API, Alarm API, Browser API, Time⁄Clock API, Web Activities, Push Notifications API, Permissions API, WebFM API, FileHandle API, Network Stats API, WebPayment, IndexedDB, Archive API, Ambient light sensor, Proximity sensor, SystemXHR, ...
window.navigator.vibrate(200);
Wibracje
checkOrientation = function() {
if(window.orientation == 0 || window.orientation == 180) {
// "obróc swoje urządzenie"
}
else {
// "możesz grać"
}
}
Orientacja ekranu
document.addEventListener("visibilitychange", function() {
if(document.hidden) {
// "aplikacja jest niewidoczna"
}
else {
// "aplikacja jest widoczna"
}
})
Widoczność strony
ctx.drawImage(myImage, 0.3, 0.5);
myEntity.offscreenCanvas = document.createElement(“canvas”);
myEntity.offscreenCanvas.width = myEntity.width;
myEntity.offscreenCanvas.height = myEntity.height;
myEntity.offscreenContext = myEntity.offscreenCanvas.getContext(“2d”);
myEntity.render(myEntity.offscreenContext);
<canvas id="mycanvas" moz-opaque></canvas>
var scaleX = canvas.width / window.innerWidth;
var scaleY = canvas.height / window.innerHeight;
var scaleToFit = Math.min(scaleX, scaleY);
var scaleToCover = Math.max(scaleX, scaleY);
stage.style.transformOrigin = "0 0";
stage.style.transform = "scale(" + scaleToFit + ")";
<div id="stage">
<canvas id="ui-layer" width="480" height="320"></canvas>
<canvas id="game-layer" width="480" height="320"></canvas>
<canvas id="background-layer" width="480" height="320"></canvas>
</div>
<style>
#stage { width: 480px; height: 320px;
position: relative; border: 2px solid black; }
canvas { position: absolute; }
#ui-layer { z-index: 3; }
#game-layer { z-index: 2; }
#background-layer { z-index: 1; }
</style>
Skupiaj się na optymalizacji samego HTML5
Firefox OS to "tylko" platforma dla webowych aplikacji
App Manager
about:app-manager
Wolność
var installapp = navigator.mozApps.install(manifestURL);
installapp.onsuccess = function(data) {
// "Aplikacja została zainstalowana"
};
installapp.onerror = function() {
// "Aplikacja NIE została zainstalowana,
// zajrzyj do installapp.error.name po więcej informacji"
}
Wrappery: Phonegap, CocoonJS, Intel XDK
Platformy: iOS, Android, Windows Phone, BlackBerry, Tizen, ...
HTML5 kontra natywne aplikacje?
W Firefox OS natywnym językiem jest JavaScript!
manifest.webapp
{
"name": "Moja nzwa aplikacji",
"description": "Tutaj jej opis",
"launch_path": "/",
"icons": {
"128": "/img/ikona-128.png"
},
"developer": {
"name": "Enclave Games",
"url": "http://enclavegames.com"
},
"default_locale": "pl"
}