Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Paper Ball
1. FERRAND Anthony NELAUPE Lucas
University Montpellier II
20 janvier 2015
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 1 / 13
2. Introduction
Game description
Paper ball is an amazing mobile game that blends dexterity & reflection
The game is divided into two parts
Prepare the board
by placing Mechanical fans
Lead the paper ball
into the bin !
Control the gravity with the
sensor’s device.
But pay attention to the fire
balls which wanting to destroy
you.
Bonus : You have to collect 3 coins !
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 2 / 13
5. Introduction Probl´ematique
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 box
Example : 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
6. Introduction Probl´ematique
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
7. Introduction Probl´ematique
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
8. Introduction Probl´ematique
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
9. Introduction Probl´ematique
Web API
We save the progress of the player on line
For this, we use an web service framework developed by us for an other project
In 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
10. Introduction Probl´ematique
Development
Team work tools
GitHub : Open source under APACHE V2 Licence
Gradle
Multiple IDE Support
Maven dependency management
Native Java development
Android SDK
RX Java
Retrofit
Joda Time
Internationalization
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 10 / 13
11. Introduction Probl´ematique
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
12. Introduction Probl´ematique
Business plan
Short-term
Add more levels
Export Scyla engine framework on Maven
Medium-term
Build your own levels
In app purchase
Exclusive levels
Exclusive skins
Long-term
Other device support
FERRAND Anthony, NELAUPE Lucas (UM2) 20 janvier 2015 12 / 13