1 Welcome to the… EiffelMedia release 0.7.0 presentation

Preview:

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

Recommended