1 welcome to the… eiffelmedia release 0.7.0 presentation

47
1 Welcome to the… EiffelMedia release 0.7.0 presentation

Upload: aubrey-stokes

Post on 02-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

1

Welcome to the… EiffelMedia release 0.7.0 presentation

Page 2: 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

Page 3: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

3

Introduction: A Few Figures

• Number of mails: 1000

• Number of files: 13000

• Lines of code: 94000

• Number of classes: 600

Page 4: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 5: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

5

Example Demonstration

Example Demonstration

Installer / Packet-Generator

Page 6: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 7: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 8: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 9: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

9

Motion Jpeg Support

Goal: A fully functional smjpeg decoder for EiffelMedia with start, stop and pause video

Jonas Rutishauser

Page 10: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

10

Example Demonstration

Example Demonstration

Motion Jpeg Support

Page 11: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 12: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

12

Impressions and Conclusions

• Patterns– factory

• What would I do better next time?– avoid multithreading

Motion Jpeg Support

Page 13: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

13

Collision Detection

Goals:– detecting collisions in 2D scenes– ease of use– versatility– optimization

Ueli Weiss

Page 14: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

14

Example Demonstration

Example Demonstration

Collition Detection

Page 15: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

15

Impressions and Conclusions

• Research

• Time management

• Patterns

• Future work

Collition Detection

Page 16: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

16

Improved audio API

Goals:– handle more file formats– mixing of multiple channels– applying effects on sound

Marco Stöckli, Marco Senn

Page 17: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 18: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

18

Example Demonstration

Example Demonstration

Improved audio API

Page 19: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 20: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 21: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

21

For the next time

• Changes for next time?– synchronize versions– standardize coding style

Improved audio API

Page 22: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

22

• Coffee time!

• 10 minutes

Page 23: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

23

Widget Library

Goal: Implementation of a widget library in EiffelMedia

Julian Tschannen

Page 24: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 25: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 26: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

26

Themes: Delegates, Colors and Fonts

• Theme options– delegate factories– colors– fonts

Widget Library

Page 27: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

27

Example Demonstration

Example Demonstration

Widget Library

Page 28: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 29: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

29

Classic Networking: Transport Layer

• TCP– connection based– reliable– event based

• UDP– connection less– unrealiable– classic polling and also– event based

Network API

Page 30: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 31: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

31

Example Demonstration

Message Client

Echo Server

Network API

Page 32: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

32

Multiplayer Concept

Multiplayer Framework

Page 33: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 34: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 35: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 36: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 37: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 38: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

38

Input Devices and Vision2 Widget

Goals:– Implementation of:

•CD-Rom Subsystem•Joystick Subsystem•Vision2 Widget

– An example for each part

Pascal Rota

Page 39: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 40: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

40

Example Demonstration

Example Demonstration

Input Devices and Vision2 Widget

Page 41: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 42: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

42

Example Demonstration

Example Demonstration

Input Devices and Vision2 Widget

Page 43: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

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

Page 44: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

44

Example Demonstration

Example Demonstration

Input Devices and Vision2 Widget

Page 45: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

45

EiffelMedia Extensions

Goals:

Make the life of programmers a little bit easier.

Urs Dönni

Page 46: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

46

Projects

• Highscore– Local and remote highscore

management

• Resource generator– Generates classes to load resources

• Settings generator– Generates classes to handle settings

EiffelMedia Extensions

Page 47: 1 Welcome to the… EiffelMedia release 0.7.0 presentation

47

Example Demonstration

Example Demonstration

EiffelMedia Extensions