Upload
aubrey-stokes
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
1
Welcome to the… EiffelMedia release 0.7.0 presentation
2
Overview
• Introduction
• Project presentations– installer– motion jpeg support– collision detection– improved audio API– pause (10‘)– widget library– network API– input devices and vision2 widget– extensions
• Questions
3
Introduction: A Few Figures
• Number of mails: 1000
• Number of files: 13000
• Lines of code: 94000
• Number of classes: 600
4
Installer/Packet-Generator
Goal: Automation of the release mechanism using scripts and template-files for multiple plattforms
(Win XP, Debian, Mac OS X)
Robert Weiser
5
Example Demonstration
Example Demonstration
Installer / Packet-Generator
6
Windows Release
• All examples are being compiled.
• All needed EiffelMedia-files are being copied to a temporary folder and all scripts to a temporary scripts folder.
• The script inserts the correct version info and executes InnoSetup-Compiler which creates installers using the given templates for the student and the adminstrator releases.
Installer / Packet-Generator
7
Linux Debian Release
• All examples are being compiled.• The files needed for making the Gobo,
EWG or EM package are being copied to a temporary folder and all scripts to a temporary scripts folder.
• The first script substitutes the version info. The second script parses the package information files and creates a directory-structure according to this files. It inserts the necessary control files and makes a Debian-package using the standard Debian packaging tools.
Installer / Packet-Generator
8
Mac OS X Release
• All examples are being compiled.• The files needed for making the Gobo,
EWG or EM package are being copied to a temporary folder and the corresponding scripts are copied to the same folder.
• The first script substitutes the version info. The second script compresses the files into the needed format and creates a bill of materials. After that it appends a ‘.pkg’ or a ‘.mpkg’ to the package folder to create a Mac package.
Installer / Packet-Generator
9
Motion Jpeg Support
Goal: A fully functional smjpeg decoder for EiffelMedia with start, stop and pause video
Jonas Rutishauser
10
Example Demonstration
Example Demonstration
Motion Jpeg Support
11
Impressions and Conclusions
• What was working?– recognise and load files– playing video
• Problems– audio data
• needed buffer• multithreading made troubles• closing mixer leads to deadlock
– multithreaded read• SDL thread caused crash• audio callback didn‘t work
Motion Jpeg Support
12
Impressions and Conclusions
• Patterns– factory
• What would I do better next time?– avoid multithreading
Motion Jpeg Support
13
Collision Detection
Goals:– detecting collisions in 2D scenes– ease of use– versatility– optimization
Ueli Weiss
14
Example Demonstration
Example Demonstration
Collition Detection
15
Impressions and Conclusions
• Research
• Time management
• Patterns
• Future work
Collition Detection
16
Improved audio API
Goals:– handle more file formats– mixing of multiple channels– applying effects on sound
Marco Stöckli, Marco Senn
17
Patterns and ease of use/learning
• Patterns– factory-pattern for loading files– singletons for shared access
• Ease of use / learning– very simple audio players– self-explaining examples
Improved audio API
18
Example Demonstration
Example Demonstration
Improved audio API
19
Conclusions
• Positive things– implemented basic parts fast and
soon– audio used by others, so tested– use of widgets allowed great example– good teamwork with project lead and
others
Improved audio API
20
Conclusions
• Negative points– bugs in header wrapper (EWG) – too many different versions between
groups (EWG, Gobo, SDL, ...)– multithreading with sdl_mixer caused
problems, so single-threaded network API was too late for internet audio stream
– effects caused strange problems on Eiffel 5.6
Improved audio API
21
For the next time
• Changes for next time?– synchronize versions– standardize coding style
Improved audio API
22
• Coffee time!
• 10 minutes
23
Widget Library
Goal: Implementation of a widget library in EiffelMedia
Julian Tschannen
24
Components, Widgets and Dialogs
• Objects on scene– 2D
• widgets• dialogs
– 3D• OpenGL
• Widgets– panel, label, button, slider, list, combobox,
scrollpanel,…
• Windows– window, message dialog, file dialog
widget library
Widget Library
25
Themes: Factory + Delegates
• Factory– factory per widget type– task
• create delegates for new widget objects
• Delegates– delegate per widget– tasks
• drawing• layout related input handling
Widget Library
26
Themes: Delegates, Colors and Fonts
• Theme options– delegate factories– colors– fonts
Widget Library
27
Example Demonstration
Example Demonstration
Widget Library
28
Network API and Multiplayer Framework
Goal: An easy to use TCP and UDP protocol stack as basis of a multiplayer game framework.
Martin Seiler, Yves Alter
29
Classic Networking: Transport Layer
• TCP– connection based– reliable– event based
• UDP– connection less– unrealiable– classic polling and also– event based
Network API
30
Classic Networking: Application Layer
• HTTP 1.0– GET and POST requests– also allows to connect to virtual hosts
(a HTTP 1.1 feature)– used for online highscore system– may be used to receive website
content
Network API
31
Example Demonstration
Message Client
Echo Server
Network API
32
Multiplayer Concept
Multiplayer Framework
33
•20, C•24, B•28, C•31, B
Peer A Peer B
•24, A•30, D•31, A
List of pending events
List of published events
Event, ID 31
Ack for event 31
ID 31
ID 31
Success agent
2PC Event System (1)
auto-remove
Multiplayer Framework
34
•20, C•24, B•28, C•31, B
Peer A Peer B
•24, A•30, D•31, A
List of pending events
Event, ID 31
ID 31
ID 31
Success agent
2PC Event System (2)
auto-remove
Ack for event 31 lostAck for event 31
List of published events
timedcallback
Multiplayer Framework
35
•20, C•24, B•28, C•31, B
Peer A Peer B
•24, A•30, D•31, A
List of pending events
Event, ID 31
ID 31
ID 31
Timeout agent
2PC Event System (3)
auto-remove
Ack for event 31 lost
List of published events
removeaftertimeout
timedcallback
Multiplayer Framework
36
2PC Events: Summary
• Every event must be acknowledged.
• Events will be resent, if remote peers did not acknowledge in time.
• Two cases:– success: All peers responded with an ACK in
time.– timeout: At least one peer did not respond in
time. No consensus reached!
• An event will be published only once on the remote peer.
• Slow compared to ‚normal‘ events.
Multiplayer Framework
37
Summary
• Positive– event based network API– no data polling necessary– easy object synchronisation and
event sending
• Negative– lots of problems with threading
attempt– multiplayer framework not very
reliable for errornous data.
Network API / Multiplayer Framework
38
Input Devices and Vision2 Widget
Goals:– Implementation of:
•CD-Rom Subsystem•Joystick Subsystem•Vision2 Widget
– An example for each part
Pascal Rota
39
CD-Rom Subsystem
• Overview– wrapper of SDL CD-Rom– get various information from CD-Rom
devices and CD‘s– audio CD handling
• Encounter Problems– Find out what is managed by SDL and
what not
Input Devices and Vision2 Widget
40
Example Demonstration
Example Demonstration
Input Devices and Vision2 Widget
41
Joystick Subsystem
• Overview– wrapper of SDL joystick– get various information from joystick
devices– joystick events (axis, button, balls,
hat)
Input Devices and Vision2 Widget
42
Example Demonstration
Example Demonstration
Input Devices and Vision2 Widget
43
Vision2 Widget
• Overview– widget for vision2– support of everything from
EiffelMedia
• Encountered Problems– understanding how SDL and vision2
works– differences between windows & linux– SDL Hack for windows
Input Devices and Vision2 Widget
44
Example Demonstration
Example Demonstration
Input Devices and Vision2 Widget
45
EiffelMedia Extensions
Goals:
Make the life of programmers a little bit easier.
Urs Dönni
46
Projects
• Highscore– Local and remote highscore
management
• Resource generator– Generates classes to load resources
• Settings generator– Generates classes to handle settings
EiffelMedia Extensions
47
Example Demonstration
Example Demonstration
EiffelMedia Extensions