paper ball
TRANSCRIPT
FERRAND Anthony NELAUPE Lucas
University Montpellier II
20 janvier 2015
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 1 / 13
Introduction
Game description
Paper ball is an amazing mobile game that blends dexterity & reflectionThe game is divided into two parts
Prepare the boardby placing Mechanical fans
Lead the paper ballinto the bin !
Control the gravity with thesensor’s device.
But pay attention to the fireballs which wanting to destroyyou.
Bonus : You have to collect 3 coins !
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 2 / 13
Introduction Problematique
Using sensors
Control the gravity at the runtime
AccelerometerGravity SensorLinear acceleration Sensor
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 3 / 13
Introduction Problematique
Scyla model managing
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 4 / 13
Introduction Problematique
Scyla scene framework
Scyla manages 3 kinds of shapes (elements)
Dynamic element (e.g Ball)
Subject to force system (see bellow)Hit box is calculated on each tick
Static element (e.g fire, bubble)
Hit box is taken into taken
Phantom element
No hit boxExample : floating text..
Scyla supports forces system
We can apply force on dynamic shape, then scyla calculate every position
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 5 / 13
Introduction Problematique
Optimization and Performence
Canvas optimizations
Canvas Transparent
Drawed in a fragment
Background draw on FrameLayout
20% speed increase
Scyla is multithreaded
Computation thread : calculate new hit boxes & forces
Main Android thread : render
Cache engine
Define cached shapes at the beginning of the scene.
Reuse existing shape.
65 % decrease of using memory
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 6 / 13
Introduction Problematique
Grid Template : genericity for supporting multiple screens
Auto Scale
30 Rows
40 Columns
Use example
grid.getPosition(5,15) ;
grid.getCenter() ;
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 7 / 13
Introduction Problematique
Adding elements with our EngineView
@Override
public void addCustomElements(Scene scene, GridTemplate grid) {
final Coin coin = new Coin(m_context, grid.getPosition(5, 10));
scene.addStaticElement(coin);
Point pointA = new Point(...), pointB = new Point(...);
coin.defineMovingFacet(new MoveBetweenInY<Coin>(35, pointA, pointB));
this.subscribeTouchListener(coin,
new FollowFingerEvent<Coin>(coin),
new TouchEvent() {
@Override
public void onTouch(Point point, TouchTypeEvent event) {
// TODO
}
}
);
}
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 8 / 13
Introduction Problematique
Web API
We save the progress of the player on lineFor this, we use an web service framework developed by us for an other projectIn Paper ball, we can :
Create an account & Log in
Save the progress (current level & the count of coins by stage)
Check the version to be notify
The web side is powered by the Django framework.
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 9 / 13
Introduction Problematique
Development
Team work tools
GitHub : Open source under APACHE V2 Licence
Gradle
Multiple IDE SupportMaven dependency management
Native Java development
Android SDK
RX Java
Retrofit
Joda Time
Internationalization
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 10 / 13
Introduction Problematique
Scope statement approved
Each app must include inevitably
Different views
Multiple languages
At least one menu
Services in background
File manager / Database
Each apps must include, if possible
Using sensors
Network access
Several threads
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 11 / 13
Introduction Problematique
Business plan
Short-term
Add more levels
Export Scyla engine framework on Maven
Medium-term
Build your own levels
In app purchase
Exclusive levelsExclusive skins
Long-term
Other device support
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 12 / 13
Introduction Problematique
Thank you,Let’s go to the demo
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 13 / 13