Διπλωματική Εργασία. Yλοποίηση διαδραστικής ψυχαγωγικής εφαρμογής σε.νετ περιβάλλον. Μακαγθάθε Θέιμε Α.Μ. : 3144

Σχετικά έγγραφα
ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Οργάνωση και Δομή Παρουσιάσεων

Constructors and Destructors in C++

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Οη πην γλσζηέο κνξθέο Pervasive παηρληδηώλ είλαη ηα Location Based Games, Augmented Reality Games θαη Mixed Reality Games.

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Ηλεκηπονικά Απσεία και Διεπαθέρ

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Η αξρή ζύλδεζεο Client-Server

Κεθάλαιο 1. Ενόηηηα 2 Πλάνο Μάρκεηινγκ. Εξγαιεία Μάξθεηηλγθ. Dr. Andrea Grimm Dr. Astin Malschinger

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

1 η Εργαζηηριακή Άζκηζη Ειζαγωγή

ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΛΘΤΑΗΚΘΔΗΡ Τ.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

Διατείριση Φσσικών Καταστρουών: ACTIVE LANDSLIDE INVENTORY MAPPING AND SUSCEPTIBILITY ZONING

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Τηλζφωνο: Ε-mail: Ώρες διδασκαλίας: 16:00 19:15 μμ

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Εισαγωγή στη Φωτογραυία. Χριζηάκης Σαζεΐδης - EFIAP

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ

Κόληξα πιαθέ ζαιάζζεο κε δηαζηάζεηο 40Υ40 εθ. Καξθηά 3 θηιά πεξίπνπ κε κήθνο ηξηπιάζην από ην πάρνο ηνπ μύινπ θπξί κεγάιν θαη ππνκνλή

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Γραφεύα Επικοινωνύασ & Ενημϋρωςησ ϋρρεσ, Τψηλϊντου 4 3οσ Όροφοσ ΣΗΛ ΥΑΦ

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο


ΜΑΘΗΜΑΤΙΚΑ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΦΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ Β ΛΥΚΔΙΟΥ ΤΔΣΤ(1) ΣΤΑ ΓΙΑΝΥΣΜΑΤΑ

Έθδνζε /11/2014. Νέα ιεηηνπξγηθόηεηα - Βειηηώζεηο

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Σπληήξεζε ηξνθίκσλ ρσξίο ρεκηθά πξόζζεηα PROJECT B ΛΥΚΕΙΟΥ

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

1. Να ζεκεηώζεηε πνηα από ηηο επόκελεο ηαρύηεηεο είλαη κεγαιύηεξε. Α. π 1 = 30m/s Β. π 2 = 0.02km/s Γ. π 3 = 36000m/h Γ. π 4 = 144km/h.

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

x x x x tan(2 x) x 2 2x x 1

ΙΣΤΟΡΙΑ ΤΟΥ ΑΡΧΑΙΟΥ ΚΟΣΜΟΥ

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

Οδηγίες Ασφρματης Πρόσβασης (Wi-Fi) στο Διαδίκτυο

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

ΑΞΙΟΘΕΑΣΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

Transcript:

Πανεπιζηήμιο Παηρών, Πολσηετνική Στολή Τμήμα Μητανικών Ηλεκηρονικών Υπολογιζηών & Πληροθορικής Διπλωματική Εργασία Yλοποίηση διαδραστικής ψυχαγωγικής εφαρμογής σε.νετ περιβάλλον Μακαγθάθε Θέιμε Α.Μ. : 3144 Επιβλέπων Τζακαλίδης Αθανάζιος, Καθηγητής Ιούλιος 2010

Η παρούζα εργαζία εκπονήθηκε ζε ζσνεργαζία με ηο Εργαζηήριο Γραθικών πολσμέζων και Γεωγραθικών Σσζηημάηων ηοσ Τμήμαηος Μητανικών Η/Υ & Πληροθορικής. 2

Πίνακας Περιεχομένων Πίνακαρ Πεπιεσομένων... 3 Πίνακαρ Σσημάηων... 5 Πίνακαρ Τμημάηων Κώδικα... 6 Ππόλογορ... 8 1. Ειζαγωγή ζηον κόζμο ηων παισνιδιών... 9 1.1. Ιζηοπική αναδπομή... 9 1.1.1. ΡΑ ΞΟΩΡΑ ΒΖΚΑΡΑ... 9 1.1.2. Ζ ΓΔΘΑΔΡΗΑ ΡΝ 70... 10 1.1.3. Ζ ΓΔΘΑΔΡΗΑ ΡΝ 80... 10 1.1.4. Ζ ΓΔΘΑΔΡΗΑ ΡΝ 90... 11 1.1.5. 2000 ΔΩΠ ΠΖΚΔΟΑ... 12 1.2. Καηηγοπίερ παισνιδιών... 13 1.2.1. ΞΑΗΣΛΊΓΗΑ ΓΟΆΠΖΠ (ACTION)... 13 1.2.2. ΞΑΗΣΛΊΓΗΑ ΞΔΟΗΞΈΡΔΗΑΠ (ADVENTURE)... 14 1.2.3. ΞΑΗΣΛΗΓΗΑ ΓΟΑΠΖΠ ΞΔΟΗΞΔΡΔΗΑΠ (ACTION - ADVENTURE)... 14 1.2.4. ΞΑΗΣΛΗΓΗΑ ΞΟΝΠΝΚΝΗΩΠΖΠ ΘΑΡΑΠΘΔΩΛ ΘΑΗ ΓΗΑΣΔΗΟΗΠΖΠ (CONSTRUCTION AND MANAGEMENT SIMULATION, CMS)... 15 1.2.5. ΞΑΗΣΛΗΓΗΑ ΞΟΝΠΝΚΝΗΩΠΖΠ ΕΩΖΠ (LIFE SIMULATION)... 15 1.2.6. ΞΑΗΣΛΗΓΗΑ ΟΝΙΩΛ (ROLE PLAYING, RPGS)... 15 1.2.7. ΞΑΗΣΛΗΓΗΑ ΠΡΟΑΡΖΓΗΘΖΠ (STRATEGY)... 15 1.2.8. ΞΑΗΣΛΗΓΗΑ ΞΟΝΠΝΚΝΗΩΠΖΠ ΝΣΖΚΑΡΩΛ... 16 1.2.9. ΆΙΙΔΠ ΘΑΡΖΓΝΟΗΔΠ ΞΑΗΣΛΗΓΗΩΛ... 16 2. Τεσνολογίερ κι Επγαλεία για ηην Ανάπηςξη Παισνιδιών... 17 2.1. Σύγσπονα Επγαλεία για ηην ανάπηςξη παισνιδιών... 17 2.1.1. ΓΙΏΠΠΔΠ ΞΟΝΓΟΑΚΚΑΡΗΠΚΝΎ... 17 2.1.2. APIS ΘΑΗ ΒΗΒΙΗΝΘΖΘΔΠ... 18 2.1.3. APIS ΓΟΑΦΗΘΏΛ... 18 2.2. Microsoft XNA... 19 2.2.1. ΒΑΠΗΘΆ ΚΈΟΖ ΡΝ ΣΛΑ FRAMEWORK... 20 2.2.2. ΡΝ ΚΝΛΡΔΙΝ ΔΦΑΟΚΝΓΖΠ ΠΡΝ XNA ΘΑΗ Ζ ΘΙΑΠΖ GAME... 21 3. Το δικό μαρ παισνίδι... 23 3.1. Η ιδέα... 23 3

3.2. Ο Level Editor... 23 3.2.1. ΠΣΔΓΗΑΠΚΝΠ ΡΝ ΞΔΟΗΒΑΙΙΝΛΡΝΠ ΡΝ ΣΑΟΡΖ... 23 3.2.2. ΘΑΘΝΟΗΠΚΝΠ ΡΩΛ ΗΓΗΝΡΖΡΩΛ ΡΩΛ TILES... 25 3.2.3. ΙΔΗΡΝΟΓΗΔΠ ΑΟΣΔΗΝ... 27 3.3. To παισνίδι... 28 3.3.1. ΞΔΟΗΓΟΑΦΖ ΡΩΛ ΓΗΑΦΝΟΩΛ ΝΘΝΛΩΛ ΡΝ ΞΑΗΣΛΗΓΗΝ... 28 3.3.2. Ζ ΔΜΔΟΔΛΖΠΖ ΡΝ ΣΑΟΡΖ ΑΞΝ ΡΝΛ ΞΑΗΘΡΖ... 29 3.4. Οδηγίερ εγκαηάζηαζηρ ηος level editor και ηος παισνιδιού από ηο σπήζηη 32 4. Η Υλοποίηζη ηος Level Editor και ηος Παισνιδιού... 34 4.1. Υλοποίηζη ηος Level Editor... 34 4.1.1. RENDERING ΠΡΝ PANEL ΡΝ WINDOWS.FORMS ΚΔ ΡΖ ΒΝΖΘΔΗΑ ΡΝ ΣΛΑ FRAMEWORK... 34 4.1.2. Ζ ΙΔΗΡΝΟΓΗΘΝΡΖΡΑ: ΡΝ ΒΑΠΗΘΝ INTERFACE, Ζ ΣΟΩΚΑΡΗΘΖ ΞΑΙΔΡΑ, Ν ΣΔΗΟΗΠΚΝΠ ΔΗΠΝΓΝ ΘΗ ΔΞΗΙΝΓΩΛ.... 37 4.1.3. ΔΜΑΓΩΓΖ ΘΑΗ ΔΗΠΑΓΩΓΖ ΣΑΟΡΩΛ ΚΔ XML ΑΟΣΔΗΑ... 42 4.2. Υλοποίηζη ηος Παισνιδιού... 43 4.2.1. Ζ ΦΝΟΡΩΠΖ ΡΩΛ ΣΑΟΡΩΛ ΡΩΛ ΔΞΗΞΔΓΩΛ... 43 4.2.2. Ζ ΑΛΑΛΔΩΠΖ ΡΝ ΞΑΗΣΛΗΓΗΝ... 44 4.2.3. Ζ ΑΞΔΗΘΝΛΗΠΖ ΡΝ ΣΑΟΡΖ ΘΑΗ ΡΝ ΞΑΗΘΡΖ ΠΡΖΛ ΝΘΝΛΖ... 46 4.2.4. Ζ ΦΠΗΘΝΗ ΘΑΛΝΛΔΠ ΡΝ ΞΑΗΣΛΗΓΗΝ, ΘΗΛΖΠΖ ΘΑΗ ΠΓΘΟΝΠΔΗΠ... 51 4.2.5. ΞΟΝΠΘΖΘΖ ΖΣΩΛ ΘΑΗ ΚΝΠΗΘΖΠ... 56 5. Παπάπηημα Α: Αναθοπέρ... 58 6. Παπάπηημα Β: Μέπη ηος Κώδικα Υλοποίηζηρ... 59 6.1. LevelEditor... 59 6.1.1. MAINFORM.CS... 59 6.1.2. RENDERING.CS... 65 6.1.3. CAMERA.CS... 71 6.2. ThesisGame... 74 6.2.1. GAME1.CS... 74 6.2.2. PLAYER.CS... 85 4

Πίνακας Σχημάτων Δηθόλα 1: Ρν παηρλίδη Tennis for Two πνπ απεηθνληδόηαλ ζε έλαλ παικνγξάθν... 9 Δηθόλα 2: Ρν arcade παηρλίδη Pong (αξηζηεξά) θη ε θνλζόια Atari 2600 (δεμηά)...10 Δηθόλα 3: Ν ΕΣ Spectrum (αξηζηεξά), Super Mario Bros γηα ην NES (δεμηά)... 11 Δηθόλα 4: Ζ θνλζόια Nintendo64 (αξηζηεξά) θαη ην PlayStation ηεο Sony (δεμηά). 12 Δηθόλα 5: Ζ θνλζόια Wii (αξηζηεξά), World of Warcraft ηεο Blizzard (δεμηά)... 13 Δηθόλα 6:Ρα ηξία βαζηθά κέξε ηνπ κνληέινπ κηαο XNA εθαξκνγήο [2]... 21 Δηθόλα 8: Level Editor, Κελνύ Δπηινγώλ Map Drawing Tools : Erase Tiles... 24 Δηθόλα 7: Δπηινγή ρξωκαηηθήο πεξηνρήο από ηελ παιέηα θαη ηνπνζέηεζε ζην ράξηε... 24 Δηθόλα 9: LevelEditor, Καξθάξηζκα νξζνγώληαο πεξηνρήο γηα νξηζκό ηδηόηεηαο Ground... 25 Δηθόλα 10: LevelEditor, Από αξηζηεξά πξνο ηα δεμηά, ε ίδηα πεξηνρή από tiles νξηζκέλωλ ηδηνηήηωλ θαηά ην αλαβόζβεκα ηνπο. Αλαιόγωο ηελ ηδηόηεηά ηνπο ηα tiles έρνπλ δηαθνξεηηθή απόρξωζε.... 26 Δηθόλα 11: LevelEditor, Δπηινγέο νξηζκνύ ηδηνηήηωλ ηωλ tiles (air, water, ground) 26 Δηθόλα 12: LevelEditor, Δπηινγέο νξηζκνύ αληηθεηκέλωλ (crystals, breathing bubbles, portal)... 27 Δηθόλα 13: LevelEditor, Δπηινγέο δεκηνπξγίαο λένπ ράξηε, εμαγωγήο θη απνζήθεπζεο ράξηε.xml ή θόξηωζεο ράξηε από.xml αξρείν.... 28 Δηθόλα 14: ThesisGame, Ν παίθηεο πάλω ζε κία πιαηθόξκα. Ν ράξηεο δωγξαθίδεηαη θαζώο εμεξεπλάηαη.... 29 Δηθόλα 15: ThesisGame, Ππιιεγκέλνη θη αζύιιεθηνη θξύζηαιινη... 30 Δηθόλα 16: ThesisGame, Νζόλε αληαιιαγήο θξπζηάιιωλ γηα επηπξόζζεην ρξόλν. 30 Δηθόλα 17: ThesisGame, Ν παίθηεο αλαλεώλεη ην ρξόλν ηνπ κέζα ζην λεξό πεξλώληαο πάλω από ηηο θπζαιίδεο αλαπλνήο... 31 Δηθόλα 18: ThesisGame, Ν παίθηεο κπξνζηά από κία πύιε πνπ ζα ηνλ κεηαθέξεη ζην επόκελν επίπεδν... 31 Δηθόλα 19: ΡhesisGame, Νζόλε αλακνλήο κε δηάθνξα ζηαηηζηηθά... 32 Δηθόλα 20: Ν θάθεινο εγθαηάζηαζεο ηνπ LevelEditor θαη ηα πεξηερόκελά ηνπ.... 32 Δηθόλα 21: Ν θάθεινο εγθαηάζηαζεο ηνπ level editor θαη ηνπ παηρληδηνύ... 33 Δηθόλα 22: Γηαδηθαζία ζύλδεζεο ηνπ XNA Framework κε ην Windows.Forms... 36 Δηθόλα 23: Ρν δέλδξν κνξθνπνίεζεο ηωλ XML αξρείωλ πνπ δεκνπξγεί ε CreateXMLDoc... 43 Δηθόλα 24: Ζ πνξεία θιήζεο ηωλ βαζηθόηεξωλ ζπλαξηήζεωλ γηα αλαλέωζε ινγηθήο θαη ζρεδηαζκό ζηελ νζόλε από ηηο Update θαη Draw κέζα ζε κία πεξίνδν αλαλέωζεο (Game.TargetElapsedTime)... 46 5

Πίνακας Τμημάτων Κώδικα Ρκήκα Θώδηθα 01: O constructor ηνπ GraphicsDeviceService... 37 Ρκήκα Θώδηθα 02: Ζ ζπλάξηεζε OnCreateControl ηεο θιάζεο GraphicsDeviceControl κέζω ηεο νπνίαο δεκηνπξγείηαη έλα instance ηνπ GraphicsDeviceService.... 38 Ρκήκα Θώδηθα 03: Ζ ζύλδεζε ηνπ XNARenderer ωο control ηνπ panel. (Tκήκαηα από ηελ ΚainForm.Designer.cs)... 38 Ρκήκα Θώδηθα 04: Ζ δνκή Tile...40 Ρκήκα Θώδηθα 05: Ζ ζπλάξηεζε GetSelectedCell ειέγρεη αλ ην ζεκείν πνπ βξίζθεηαη ην mouse είλαη εληόο θάπνηνπ tile ηεο ρξωκαηηθήο παιέηαο θη επηζηξέθεη ην νξζνγώλην πνπ αληηπξνζωπεύεη απηό ην tile.... 41 Ρκήκα Θώδηθα 06: Ρκήκα ηεο ζπλάξηεζεο OnMouseMove, όπνπ ειέγρεηαη αλ ην αξηζηεξό θιηθ ηνπ mouse είλαη παηεκέλν θαη θαιεί ηε ηε ζπλάξηεζε CreateMarqueeArea γηα λα δεκηνπξγεζεί ην νξζνγώλην πιαίζην επηινγήο, βάζεη ηνπ νξζνγωλίνπ πνπ έρεη δεκηνπξγεζεί από ην mouse θαηά ην ζύξζηκό ηνπ.... 41 Ρκήκα Θώδηθα 07: Ζ δνκή Map_Data... 41 Ρκήκα Θώδηθα 08: Ρκήκα ηεο MainForm θαηά ην νπνίν θνξηώλνληαη θάπνηα από ηα textures.... 42 Tκήκα Θώδηθα 09: Ρκήκα ηεο ζπλάξηεζεο xna_renderer_mousedown θαηά ην νπνίν αλαιόγωο ηη ιεηηνπξγία έρεη επηιεγεί από ην κελνύ, μεθηλάεη ην καξθάξηζκα ηνπ νξζνγώληνπ πιαηζίνπ επηινγήο... 42 Ρκήκα Θώδηθα 10: Ζ κεηαβιεηή PaintTool... 43 Ρκήκα Θώδηθα 11: Ζ ζπλάξηεζε BrushPaint ηεο θιάζεο Brushes, θαζνξίδεη ηηο ρξωκαηηθέο ηδηόηεηεο ηωλ επηιεγκέλωλ tiles πξνο ρξωκαηηζκό.... 43 Ρκήκα Θώδηθα 12: Ρν ηκήκα ηεο CreateXMLDoc όπνπ εγγξάθεηαη ε πιεξνθνξία γηα ην tile εθθίλεζεο ηνπ παίθηε.... 45 Ρκήκα Θώδηθα 13: Ζ δνκή Map_Data ηνπ παηρληδηνύ.... 46 Ρκήκα Θώδηθα 14: Ρκήκα ηεο ζπλάξηεζεο LoadNextLevel ζην νπνίν δεκηνπξγείηαη έλα λέν instance ηεο θιάζεο Level γηα λα θηινμελήζεη ην λέν επίπεδν.... 46 Ρκήκα Θώδηθα 15: Ζ ζπλάξηεζε Update ηεο θιάζεο Game1... 47 Ρκήκα Θώδηθα 16: Ζ Update ηεο θιάζεο Player... 47 Ρκήκα Θώδηθα 17: Ρκήκα ηεο ζπλάξηεζεο Draw ηεο θιάζεο Game1, θαηά ην νπνίν θαιείηαη ε SpriteBatch.Draw γηα ην ζρεδηαζκό ηνπ texture ηνπ ραξηηνύ πάλω ζην νπνίν ζρεδηάδεηαη νηηδήπνηε άιιν.... 49 Ρκήκα Θώδηθα 18: Θαζνξηζκόο ηωλ tiles ζε αθηίλα 3 tiles από ην texture ηνπ παίθηε.... 49 Ρκήκα Θώδηθα 19 : Έιεγρνο ηωλ tiles ζε αθηίλα ηξηώλ tiles γύξω από ηνλ παίθηε θαη νξηζκόο ηνπο ζε θαλεξωκέλα tiles... 50 Ρκήκα Θώδηθα 20: Ζ ζπλάξηεζε DrawLevel ηεο θιάζεο Level... 50 6

Ρκήκα Θώδηθα 21: Ρκήκαηα ηεο ζπλάξηεζεο DrawMap ηεο θιάζεο Level ζηα νπνία θαζνξίδεηαη πνηό tile ηνπ ράξηε ζα δωγξαθηζηεί θαη κε πνηά ζπγθεθξηκέλν ρξώκα βάζεη ηεο ρξωκαηηθήο παιέηαο.... 50 Ρκήκα Θώδηθα 22: Ζ ζπλάξηεζε Draw ηεο θιάζεο Player... 50 Ρκήκα Θώδηθα 23: Ρκήκα ηεο ζπλάξηεζεο HandleZoom ζηελ νπνία θαζνξίδεηαη ην πνζνζηό ηνπ zoom out ηεο θάκεξαο θαηά ηελ εμεξεύλεζε ηνπ ράξηε.... 51 Ρκήκα Θώδηθα 24: Ζ ζπλάξηεζε get_transformation ηεο θιάζεο Camera... 51 Ρκήκα Θώδηθα 25: Ρκήκα ηεο ζπλάξηεζεο Draw ηεο θιάζεο Game1, ζην νπνίν ην ζηηγκηόηππν ηεο SpriteBatch γηα ην ράξηε θαη ηνλ παίθηε, ζρεδηάδνληαη βάζεη ηωλ ξπζκίζεωλ ηεο θάκεξαο... 52 Ρκήκα Θώδηθα 26: Ρκήκα ηεο ζπλάξηεζεο Draw ηεο θιάζεο Game1 θαηά ην νπνίν θαιείηαη ε ζπλάξηεζε SetCamera, γηα ηε ξύζκίζε ηεο θάκεξαο βάζεη ηνπ παίθηε.... 52 Ρκήκα Θώδηθα 27: Ρκήκαηα θώδηθα ηεο ζπλάξηεζεο SetCamera... 53 Ρκήκα Θώδηθα 28: Ρκήκα ηεο ζπλάξηεζεο GetInput... 53 Ρκήκα Θώδηθα 29: Ρκήκα ηεο ζπλάξηεζεο ApplyPhysics θαηά ην νπνίν θαζνξίδεηαη ε ηαρύηεηα ηνπ παίθηε θη έπεηηα βάζεη απηήο πξνζαξκόδεηαη ε ζέζε ηνπ παίθηε.. 54 Ρκήκα Θώδηθα 30: Ρκήκα ηεο ζπλάξηεζεο DoJump θαηά ηελ νπνία πξνζνκνηώλεηαη ην άικα... 55 Ρκήκα Θώδηθα 31: Ρκήκα ηεο ζπλάξηεζεο ApplyPhysics θαηά ην νπνίν πξνζνκνηώλεηαη ε ειεύζεξε πηώζε... 55 Ρκήκα Θώδηθα 32: Ρκήκα ηεο ζπλάξηεζεο DoDive... 55 Ρκήκα Θώδηθα 33: Ζ ζπλάξηεζε DoFloat... 56 Ρκήκα Θώδηθα 35: Ρκήκα ηνπ νξηζκνύ ηεο κεηαβιεηήο BoundingRectangle ηεο θιάζεο Player... 56 Ρκήκα Θώδηθα 36: Ρκήκα ηεο HandleCollisions θαηά ην νπνίν ειέγρεηαη αλ ν παίθηεο παηάεη ζε έδαθνο... 56 Ρκήκα Θώδηθα 37: Ρκήκα ηεο ζπλάξηεζεο HandleCollisions πνπ θαιείηαη κεηά ηνλ ππνινγηζκό ηωλ απνζηάζεωλ κεηαμύ ηνπ παίθηε θαη ηωλ γεηηνληθώλ tiles... 57 Ρκήκα Θώδηθα 38: Ρκήκα ηεο ζπλάξηεζεο HandleObjectivesCollision θαηά ην νπνίν ειέγρεηαη εάλ ν ηύπνο ηνπ tile πνπ ν παίθηεο έρεη εηζβάιιεη είλαη θξύζηαιινο, απμάλεη ην ζθνξ θξπζηάιιωλ θαη αθαηξεί ηελ ηδηόηεηα ηνπ θξπζηάιινπ από ην tile έηζη ώζηε λα κελ κπνξεί λα μαλαζπιιεγεί... 57 Ρκήκα Θώδηθα 39: Ρκήκα ηεο ζπλάξηεζεο HandleWaterCollision θαηά ην νπνίν ειέγρεηαη αλ ν παίθηεο βξίζθεηαη θαηά ην ήκηζπ εληόο ηνπ λεξνύ.... 58 Ρκήκα Θώδηθα 40: Ρκήκαηα ηεο θιάζεο Player ζηα νπνία θνξηώλνληαη θη νξίδνληαη ηα ζηηγκηόηππα ήρνπ... 58 Ρκήκα Θώδηθα 41: Ρκήκα ηεο ζπλάξηεζεο HandleWaterCollision, θαηά ην νπνίν εθθηλείηαη θαη ζηακαηά ν ήρνο βπζνύ... 59 Ρκήκα Θώδηθα 42: Ρκήκα ηεο PlayBackgroundMusic... 59 7

Πρόλογος Ζ παξνχζα δηπισκαηηθή εξγαζία έρεη σο ζέκα ηελ αλάπηπμε ελφο παηρληδηνχ δχν δηαζηάζεσλ γηα ειεθηξνληθφ ππνινγηζηή. Τν παηρλίδη πινπνηήζεθε ζηε γιψζζα πξνγξακκαηηζκνχ C# κε ρξήζε ηνπ XNA Game Studio 3.1 ηεο Microsoft θαη ηνπ πεξηβάιινληνο αλάπηπμεο Visual Studio 2008. Τν παηρλίδη βαζίδεηαη ζηε ρξήζε απιήο θπζηθήο, έηζη ψζηε ν παίθηεο λα κπνξεί λα εμεξεπλήζεη ηνλ θφζκν ηνπ παηρληδηνχ. Σηελ πινπνίεζε ζπκπεξηιακβάλεηαη θη ε αλάπηπμε ελφο παξαζπξηθνχ πεξηβάιινληνο επεμεξγαζίαο επηπέδσλ (level editor), κε ην νπνίν ν ρξήζηεο κπνξεί λα δεκηνπξγήζεη ηνπο δηθνχο ηνπ ράξηεο επηπέδσλ μερσξηζηά θαη λα ηνπο ζπλδέζεη άκεζα κε ην παηρλίδη. Σην πξψην θεθάιαην ζα γίλεη κία αλαδξνκή ζηελ ηζηνξία ησλ ειεθηξνληθψλ παηρληδηψλ, απφ ηα πξψηα βήκαηά ηνπο κέρξη θαη ηε ζεκεξηλή επνρή. Δπίζεο ζα γίλεη κία ζπλνπηηθή αλαθνξά ζηηο δηαθνξεηηθέο θαηεγνξίεο ησλ παηρληδηψλ πνπ αλαπηχρζεθαλ κε ηα ρξφληα θαζψο θαη ζε δηάζεκνπο ηίηινπο παηρληδηψλ πνπ θέξδηζαλ ην θνηλφ θαη απνηέιεζαλ έκπλεπζε γηα ηελ αλάπηπμε πνιιψλ άιισλ. Σην δεχηεξν θεθάιαην ζα κειεηεζνχλ νη ζχγρξνλεο ηερλνινγίεο θη εξγαιεία αλάπηπμεο παηρληδηψλ. Θα αλαθεξζνχλ νη γιψζζεο πξνγξακκαηηζκνχ πνπ πξνηηκψληαη ζηελ αλάπηπμε παηρληδηψλ, νη δηάθνξεο εηδηθέο βηβιηνζήθεο γεληθνχ ζθνπνχ ή γξαθηθψλ πνπ ρξεζηκνπνηνχληαη θαη γεληθφηεξα νη ηερλνινγίεο αλάπηπμεο παηρληδηψλ πνπ επηθξαηνχλ. Αθφκα ζα κειεηεζεί ζπγθεθξηκέλα ην εξγαιείν XNA ηεο Microsoft, ην νπνίν ρξεζηκνπνηήζεθε γηα ηε δεκηνπξγία ηνπ παηρληδηνχ απηήο ηεο δηπισκαηηθήο εξγαζίαο. Σην ηξίην θεθάιαην ζα αλαιπζεί ηφζν ε ηδέα θαη ε ινγηθή πίζσ απφ ην παηρλίδη ηεο δηπισκαηηθήο εξγαζίαο, φζν θαη πην ζπγθεθξηκέλα ν ηξφπνο ρξήζεο ηνπ level editor θαη ηνπ παηρληδηνχ. Σην ηέηαξην θεθάιαην ζα εμεγεζνχλ ηα δεηήκαηα ζρεηηθά κε ηελ πινπνίεζε ηνπ παηρληδηνχ θαη ηνπ level editor ζε επίπεδν θψδηθα. Θα επεμεγεζεί ε γεληθή δνκή ηνπ θψδηθα, νη θιάζεηο θη νη ζπλαξηήζεηο πνπ πινπνηήζεθαλ γηα λα δεκηνπξγεζεί νιφθιεξν ην παηρλίδη. Τέινο, ζην παξάξηεκα παξαηίζεληαη νη αλαθνξέο θαη ν θψδηθαο απηήο ηεο δηπισκαηηθήο εξγαζίαο. 8

1. Εισαγωγή στον κόσμο των παιχνιδιών 1.1. Ιζηοπική αναδπομή Ζ ηζηνξία ησλ ειεθηξνληθψλ παηρληδηψλ μεθηλάεη πεξίπνπ ζηα κηζά ηνπ 20 νπ αηψλα. Ζ βηνκεραλία αλάπηπμεο ειεθηξνληθψλ παηρληδηψλ απφ ηφηε κέρξη ζήκεξα δελ έρεη ζηακαηήζεη λα εμειίζζεηαη θη είλαη κία απφ ηηο πην θεξδνθφξεο. Δδψ ζα κειεηεζεί ζπλνπηηθά ε παξάιιειε πνξεία ηεο εμέιημεο ηφζν ηνπ hardware φζν θαη ηνπ software πνπ αθνξά ηα ειεθηξνληθά παηρλίδηα. 1.1.1. Τα πξώηα βήκαηα Τα πξψηα βήκαηα ζηελ αλάπηπμε ειεθηξνληθψλ παηρληδηψλ έγηλαλ εληφο εξγαζηεξηαθνχ θαη παλεπηζηεκηαθνχ πεξηβάιινληνο. Τν πξψην γλσζηφ δηαδξαζηηθφ ειεθηξνληθφ παηρλίδη, ήηαλ έλα παηρλίδη πξνζνκνίσζεο ππξαχισλ ζε νζφλε θαζνδηθνχ ζσιήλα ην 1947 (Cathode Ray Tube Amusement Device). Αθνινχζεζαλ κεξηθέο αθφκα πξνζπάζεηεο ζηηο νπνίεο πεξηιακβάλνληαη ην παηρλίδη Tennis for Two ηνπ 1958 πνπ ρξεζηκνπνηνχζε έλαλ αλαινγηθφ ππνινγηζηή θη έλαλ παικνγξάθν (Δηθφλα 1) θαη ην παηρλίδη Spacewar! ζην παλεπηζηήκην MIT ην 1961. Εηθόλα 1: Τν παηρλίδη Tennis for Two πνπ απεηθνληδόηαλ ζε έλαλ παικνγξάθν Βαζηζκέλε ζε απηά ηα πξψηα βήκαηα, ε ηερλνινγία αλάπηπμεο ειεθηξνληθψλ παηρληδηψλ εμειίρζεθε ζηαδηαθά ζηα επφκελα ρξφληα πεξηνξηζκέλε βέβαηα απφ ην hardware θαη ηα ιεηηνπξγηθά ζπζηήκαηα ηεο επνρήο, πνπ ήηαλ θπξίσο παλεπηζηεκηαθνί ή mainframe ππνινγηζηέο. 9

1.1.2. Η δεθαεηία ηνπ 70 Τν πξψην παηρλίδη πνπ απφθηεζε επξεία αλαγλψξηζε θαη θνηλφ, ήηαλ ην Pong ηεο εηαηξείαο Atari θαη θπθινθφξεζε ην 1972. Τν Pong ήηαλ έλα arcade παηρλίδη κε ηε δηθή ηνπ κεραλή πνπ ιεηηνπξγνχζε κε θέξκαηα θαη πξνζνκνίσλε έλα παηρλίδη πηλγθ πνλγθ (Δηθφλα 2). Με ην Pong μεθίλεζε κία νιφθιεξε βηνκεραλία arcade παηρληδηψλ πνπ απέθηεζε θαλαηηθφ θνηλφ απφ ηα ηέιε ηεο δεθαεηίαο ηνπ 70 κέρξη θαη ηα κηζά ηεο επφκελεο. Πνιχ δεκνθηιή παηρλίδηα ήηαλ ην Space Invaders, ην Asteroids, ην Pac- Man, ην Donkey Kong, ην Mario Bros θαη πνιιά άιια. Εηθόλα 2: Τν arcade παηρλίδη Pong (αξηζηεξά) θη ε θνλζόια Atari 2600 (δεμηά) Παξάιιεια, ηε δεθαεηία ηνπ 70, άξρηζαλ λα αλαπηχζζνληαη θαη θνλζφιεο παηρληδηψλ κηθξφηεξεο ζε κέγεζνο θαη ηδαληθέο γηα ρξήζε ζην ζπίηη. Ζ πξψηε θνλζφια παηρληδηψλ ήηαλ ην Magnavox Odyssey, ηεο Magnavox πνπ θπθινθφξεζε ην 1972 απφ ηελ Magnavox, ζπλδεφηαλ κε ηελ νζφλε ηεο ηειεφξαζεο θαη ν πξνγξακκαηηζκφο ηεο ήηαλ βαζηζκέλνο ζε αιιαγή ησλ ειεθηξνληθψλ θπθισκάησλ (DTL) κέζσ θαζεηψλ. Απηή ε ηερλνινγία εμειίρζεθε κε ηε δεχηεξε γεληά παηρληδηψλ θνλζφιαο, φπσο ην Atari 2600 (1977) (Δηθφλα 2), ην Odyssey 2 (1978), ην Intellivision (1980), ην ColecoVision (1982), ην Sega SG-1000 (1983) θαη δηάθνξα άιια. Απηή ε δεχηεξε γεληά ζε αληίζεζε κε ηελ πξψηκε DTL ηερλνινγία, ρξεζηκνπνηνχζε κηθξνεπεμεξγαζηέο. Οη θαζέηεο ηψξα πεξηείραλ ROM chips θη φηαλ θνξηψλνληαλ ζηελ θνλζφια, ε κλήκε ηνπο δηαβαδφηαλ απφ ηνπο κηθξνεπεμεξγαζηέο βαζηθνχ ζθνπνχ ηεο θνλζφιαο. 1.1.3. Η δεθαεηία ηνπ 80 Με ηελ έιεπζε ησλ ειεθηξνληθψλ ππνινγηζηψλ ζε πεξηζζφηεξα ζπίηηα ηε δεθαεηία ηνπ 70 θαη θπξίσο ηε δεθαεηία ηνπ 80, εξαζηηέρλεο άξρηζαλ λα πξνγξακκαηίδνπλ θιψλνπο ησλ δεκνθηιψλ arcade παηρληδηψλ γηα ηνπο λένπο ειεθηξνληθνχο ππνινγηζηέο. Τν 1984, ε βηνκεραλία αλάπηπμεο παηρληδηψλ γηα ππνινγηζηέο πήξε ηε ζέζε ησλ παηρληδηψλ θνλζφιαο θαη παηρλίδηα άξρηζαλ λα αλαπηχζζνληαη γηα πξνζσπηθνχο ππνινγηζηέο ηεο επνρήο φπσο ν Commodore 64, o Apple II, o ZX 10

Spectrum (Δηθφλα 3) θη ν Amstrad CPC. Με ηνλ εξρνκφ ηνπ Atari ST θαη ηνπ Commodore Amiga (1985), ήξζε θη ε επνρή ησλ 16-bit ππνινγηζηψλ, ηα γξαθηθά θαη ηα ρξψκαηα ζηα παηρλίδηα βειηηψζεθαλ. Εηθόλα 3: Ο ΖΧ Spectrum (αξηζηεξά), Super Mario Bros γηα ην NES (δεμηά) Τελ ίδηα πεξίπνπ επνρή, νη θνλζφιεο παηρληδηψλ επαλήιζαλ ζην πξνζθήλην ην 1985 κε ην NES ηεο Nintendo καδί κε ην παηρλίδη Super Mario Bros (Δηθφλα 3). πνπ έγηλε ακέζσο επηηπρία θαη ήηαλ ην παηρλίδη κε ηηο κεγαιχηεξεο πσιήζεηο φισλ ησλ επνρψλ γηα παξαπάλσ απφ δχν δεθαεηίεο. Τν 1986 θπθινθφξεζε θαη ε θνλζφια Sega Master System. Απηέο ήηαλ θνλζφιεο κε επεμεξγαζηή ησλ 8-bits κε πην ζχγρξνλα ρεηξηζηήξηα. Απηήλ ηελ πεξίνδν θπθινθφξεζαλ δεκνθηιή παηρλίδηα φπσο ηα Legend of Zelda, Dragon Quest θαη Final Fantasy πνπ ππήξμαλ έκπλεπζε θη επηξξνή γηα πνιιά κεηαγελέζηεξα παηρλίδηα. 1.1.4. Η δεθαεηία ηνπ 90 Με ην μεθίλεκα ηεο δεθαεηίαο ηνπ 90, νη εμειίμεηο ζηελ βηνκεραλία παηρληδηψλ ήηαλ ξαγδαίεο. Τα raster 1 γξαθηθά δψζαλε ηε ζέζε ηνπο ζηα ηξηζδηάζηαηα θαη άξρηζε ε εμέιημε λέσλ εηδψλ παηρληδηψλ, φπσο ηα παηρλίδηα βνιψλ πξψηνπ πξνζψπνπ (ζπλήζσο γλσζηά κε ηελ αγγιηθή ηνπο νλνκαζία: first-person shooter ή ζε ζπληνκία FPS), ζηξαηεγηθήο πξαγκαηηθνχ ρξφλνπ (real-time strategy) θαη ησλ καδηθά πνιιψλ ρξεζηψλ online παηρληδηψλ (massively multiplayer online, MMO). Tελ ίδηα επνρή έθαλε ηελ εκθάληζε ηνπ θαη ην GameBoy ηεο Nintendo, κία εμαηξεηηθά δεκνθηιήο παηρληδνκεραλή ρεηξφο. Καζψο νη επεμεξγαζηέο βειηηψλνληαλ ζπλερψο (Intel 80386, Intel 80486, Motorola 68030) άξρηζε ε άλνδνο ησλ 3D γξαθηθψλ θαη ησλ δπλαηνηήησλ ησλ ππνινγηζηψλ φζν αθνξά ηα πνιπκέζα κέζσ ησλ λέσλ θαξηψλ ήρνπ θαη ησλ CD-ROM. Ζ δηαλνκή ησλ παηρληδηψλ (δνθηκαζηηθψλ παηρληδηψλ, demo) κε δηζθέηεο, πξψηα ησλ 5 ¼ θη έπεηηα ησλ 3.5 ηληζψλ, ήηαλ εχθνιε θαη δελ θφζηηδε πνιχ. Αξγφηεξα, φηαλ ην κέγεζνο ησλ παηρληδηψλ κεγάισλε, ην ίδην γηλφηαλ κε ηε δηαλνκή CDs. Τε δεθαεηία ηνπ 90 θπθινθφξεζαλ πνιινί λένη ηίηινη παηρληδηψλ γηα ππνινγηζηέο πνπ έζεζαλ ηηο βάζεηο γηα θαηλνχξηα είδε παηρληδηνχ, φπσο ηα δηάζεκα Dune II, Warcraft: Orcs & Humans, Command & Conquer, StarCraft, SimCity, Quake, Monkey Island θαη πιεζψξα άιισλ. Σηα κηζά ηεο δεθαεηίαο, γίλαλε πξνζηηέο θαη νη 3D accelerator θάξηεο γξαθηθψλ γηα ππνινγηζηέο, κία ηερλνινγία πνπ επέηξεςε πνιχ πην ιεπηνκεξή γξαθηθά απφ απηά πνπ ζα κπνξνχζε λα πξνζθέξεη έλαο 1 Τα raster graphics είλαη κία δνκή δεδνκέλσλ πνπ αλαπαξηζηά γεληθψο έλα νξζνγψλην πιέγκα απφ pixels γηα λα αλαπαξαζηήζεη κία εηθφλα. 11

επεμεξγαζηήο πνπ ζα έπξεπε λα ρεηξηζηεί θαη ηε ινγηθή ηνπ παηρληδηνχ θαη ηα γξαθηθά. Τν γεγνλφο απηφ, έδσζε ψζεζε ζηελ εμέιημε ησλ παηρληδηψλ. Τελ ίδηα επνρή, άξρηζαλ λα θάλνπλ ηελ εκθάληζε ηνπο ηα online παηρλίδηα, παηρλίδηα δειαδή πνπ κπνξνχζαλ λα παηρζνχλ κε πνιινχο παίθηεο κέζσ ηνπ internet. Ζ δπλαηφηεηα γηα ππνζηήξημε πνιιψλ παηθηψλ κέζσ internet, έγηλε απαξαίηεηε πξνυπφζεζε γηα ηα first-person shooter παηρλίδηα, πνπ ράξαμαλ ην δξφκν γηα ηελ online εθδνρή πνιιψλ real-time strategy παηρληδηψλ φπσο ην Age of Empires ηεο Μicrosoft Game Studios, ή ηα Warcraft θαη Starcraft ηεο Blizzard. Καζψο θαη νη ηερλνινγίεο ηζηνχ εμειίζζνληαλ θαη αλαπηχζζνληαλ πξφζζεηεο εθαξκνγέο γηα ηνπο πεξηεγεηέο ηζηνπ (web browsers) φπσο ε Java θαη ην Adobe Flash, άξρηζαλ λα πινπνηνχληαη θαη κηθξά παηρλίδηα ηα νπνία ν ρξήζηεο κπνξνχζε λα θαηεβάζεη απφ ηνλ ηζηφ θαη λα ηα παίμεη θαηεπζείαλ κέζα απφ ηνλ browser. Παξάιιεια ηε δεθαεηία ηνπ 90 θπθινθφξεζαλ θαηλνχξηεο θνλζφιεο 32 θαη 64-bit, φπσο ήηαλ ην Sega Saturn, ην PlayStation θαη ην Nintendo64 (Δηθφλα 4). Πιένλ θαη ηα παηρλίδηα γηα απηέο ηηο θνλζφιεο, φπσο νη ζπλέρεηεο ησλ ζεηξψλ Zelda θαη Final Fantasy, άξρηζαλ λα θπθινθνξνχλ ζε CDs κε εμαίξεζε ην Nintendo64, πνπ αθφκα ρξεζηκνπνηνχζε θαζέηεο. Εηθόλα 4: Η θνλζόια Nintendo64 (αξηζηεξά) θαη ην PlayStation ηεο Sony (δεμηά) Σηα ηέιε ηεο δεθαεηίαο ηνπ 90, έθαλε ηελ εκθάληζή ηνπ θη έλα λέν είδνο παηρληδηνχ πνπ ρξεζηκνπνηνχζε πξννπηηθή θάκεξαο ηξίηνπ πξνζψπνπ (third-person shooter). Τέηνηα παηρλίδηα ήηαλ γηα παξάδεηγκα ηα Grand Theft Auto III θαη Hitman. Τελ ίδηα πεξίνδν ηελ εκθάληζή ηνπο θάλαλε θαη ηα παηρλίδηα γηα θηλεηά ηειέθσλα, φπσο ήηαλ ην Φηδάθη ζηα θηλεηά ηειέθσλα ηεο Nokia. 1.1.5. 2000 έωο ζήκεξα Με ηελ είζνδν ηεο λέαο ρηιηεηίαο, ηα 3D γξαθηθά άξρηζαλ λα γίλνληαη πξνυπφζεζε γηα ηα πεξηζζφηεξα παηρλίδηα θη αθφκα λα εηζάγνληαη γξαθηθά πςειήο επθξίλεηαο (High Definition). Καηλνχξηεο κεραλέο θπζηθήο πινπνηήζεθαλ έηζη ψζηε λα πξνζνκνηψλνπλ ξεαιηζηηθά ηνπο θπζηθνχο λφκνπο, ε ηερλεηή λνεκνζχλε ζηα παηρλίδηα βειηηψζεθε θη επίζεο άξρηζαλ λα αλαπηχζζνληαη παηρλίδηα κε δηαδξαζηηθα ή immersive 2 πεξηβάιινληα. Οη θαηλνχξηεο θνλζφιεο παηρληδηψλ φπσο ην PlayStation 2 ηεο Sony, ην Xbox ηεο Microsoft θαη ην GameCube ηεο Nintendo είραλ εμειηγκέλα γξαθηθά θαη είραλ ελζσκαησκέλα DVD-players θαη ζθιεξνχο δίζθνπο. Αλ κέρξη ηψξα νη θνλζφιεο παηρληδηψλ είραλ θπξίσο θνηλφ κηθξήο ειηθίαο, νη θαηλνχξηεο θνλζφιεο άξρηζαλ λα ζηνρεχνπλ θαη λα γίλνληαη έλαο ηδηαίηεξα δεκνθηιήο ηξφπνο δηαζθέδαζεο θαη ζε θνηλφ κεγαιχηεξεο ειηθίαο. 2 Immersive environment είλαη έλα πεξηβάιινλ εηθνληθήο πξαγκαηηθφηεηαο κέζα ζην νπνίν ν ρξήζηεο ρξεζηκνπνηψληαο δηάθνξεο δηαδξαζηηθέο ζπζθεπέο, ληψζεη ζα λα βξίζθεηαη κέζα ζηνλ θφζκν ηνλ νπνίν πξνζνκνηψλεη ην πεξηβάιινλ. 12

To 2005 θπθινθφξεζε ην Xbox360 θαη ην 2006 αθνινχζεζε ην PlayStation 3. Τν 2006 έθαλε θαη ηελ πξψηε ηνπ εκθάληζε ην Wii ηεο Nintendo, πξνθαιψληαο αίζζεζε θαη εηζάγνληαο έλαλ θαηλνχξην είδνο παηρληδηνχ βαζηζκέλν ζην δηαδξαζηηθφ ρεηξηζηήξην πνπ αληρλεχεη ηελ θίλεζε ηνπ παίθηε (Δηθφλα 5). Παξάιιεια θπθινθφξεζαλ θαη δχν λέεο θνξεηέο παηρληδνκεραλέο, ην Nintendo DS θαη ην PlayStation Portable (PSP). Tα ραξαθηεξηζηηθά απηήο ηεο γεληάο θνλζνιψλ ζπκπεξηιακβάλνπλ γξαθηθά πςειήο επθξίλεηαο, θέληξα πνιπκέζσλ θαη δπλαηφηεηα αζχξκαηεο ζχλδεζεο. Εηθόλα 5: Η θνλζόια Wii (αξηζηεξά), World of Warcraft ηεο Blizzard (δεμηά) Καηλνχξηα είδε παηρληδηψλ γίλαλε δεκνθηιή θαη απηήλ ηελ πεξίνδν φπσο ήηαλ ηα κνπζηθά παηρλίδηα, φπσο ην Guitar Hero θαη ηα ΜΜΟRPGs (massively multiplayer online role playing games), φπσο ην World of Warcraft (Δηθφλα 5), ην Lord of the Rings θαη πνιιά άιια. Οη ξεαιηζηηθέο κεραλέο θπζηθήο πνπ ρξεζηκνπνηήζεθαλ ζε παηρλίδηα φπσο ην Half-Life 2, ην Company of Heroes θαη ην Crysis δεκηνχξγεζαλ παηρλίδηα κε πνιχ πςειφ βαζκφ ξεαιηζκνχ ζηε δηάδξαζε ηνπ παίθηε κε ην πεξηβάιινλ. Έλα αθφκα θαηλφκελν ζηελ αλάπηπμε παηρληδηψλ ηεο ηειεπηαίαο δεθαεηίαο, ήηαλ νη ηξνπνπνηήζεηο ησλ παηρληδηψλ απφ ηνπο ρξήζηεο ηνπο. Τν παηρλίδη Counter-Strike γηα παξάδεηγκα μεθίλεζε σο εηδηθή ηξνπνπνίεζε ηνπ παηρληδηνχ Half- Life. Τελ ίδηα πεξίνδν, ηδηαίηεξε άλνδν ζεκείσζαλ browser-based παηρλίδηα πινπνηεκέλα ζε ηερλνινγίεο Java, Javascript, Flash θαζψο ε πνηφηεηα ηφζν ησλ ίδησλ ησλ browsers φζν θαη ηεο ηαρχηεηάο ησλ ζπλδέζεσλ ζην internet βειηησλφηαλ ζεκαληηθά. Έλα παξάδεηγκα ηεο απήρεζεο απηψλ ησλ απιψλ παηρληδηψλ είλαη ην Farmville ηεο Εynga κε πάλσ απφ 82 εθαηνκκχξηα παίθηεο. Τα παηρλίδηα γηα θηλεηά ηειέθσλα εμειίρζεθαλ θη απηά κε ηε ζεηξά ηνπο, εηδηθά κε ηελ έιεπζε ησλ έμππλσλ θηλεηψλ ηειεθψλσλ φπσο ην iphone ηεο Apple ή ην N Series ηεο Nokia. 1.2. Καηηγοπίερ παισνιδιών Ήδε θαηά ηελ ηζηνξηθή αλαδξνκή, αλαθέξζεθαλ πνιιέο δηαθνξεηηθέο θαηεγνξίεο ειεθηξνληθψλ παηρληδηψλ. Σε απηφ ην ππνθεθάιαην ζα πεξηγξαθνχλ κεξηθέο απφ ηηο βαζηθέο θαηεγνξίεο παηρληδηψλ θαη ζα αλαθεξζνχλ θάπνηνη αληηπξνζσπεπηηθνί ηίηινη παηρληδηψλ πνπ έγηλαλ πνιχ δεκνθηιή θη άθεζαλ ην ζεκάδη ηνπο ηφζν ζηε βηνκεραλία ησλ παηρληδηψλ αιιά θαη ζην θνηλφ ησλ παηθηψλ. 1.2.1. Παηρλίδηα Γξάζεο (Action) Τα παηρλίδηα δξάζεο απαηηνχλ γξήγνξα αληαλαθιαζηηθά, αθξίβεηα θαη θαιφ ζπγρξνληζκφ. Δίλαη ίζσο ε πην βαζηθή θαηεγνξία θαη ζίγνπξα ε πην επξεία. Παξαθάησ ζα ρξεζηκνπνηεζνχλ θπξίσο νη αγγιηθέο νλνκαζίεο ησλ ππνθαηεγνξηψλ, κηαο θαη απηέο είλαη πνπ ρξεζηκνπνηνχληαη ζπλήζσο απφ ηνπο παίθηεο. 13

Παηρλίδηα Μάρεο Σε απηήλ ηελ θαηεγνξία ππάγνληαη ηα Beat em Up, ηα Hack and Slash θαη ηα Fighting παηρλίδηα. Οη δηαθνξέο απηψλ ησλ θαηεγνξηψλ κεηαμχ ηνπο ζρεηίδνληαη θπξίσο κε ηνλ ηξφπν ηεο κάρεο, αλ ε κάρε είλαη κεηαμχ ελφο ελαληίσλ πνιιψλ ή έλαο ελαληίνλ ελφο, ηα φπια ηεο κάρεο θηι. Τέηνηα παηρλίδηα είλαη ηα Double Dragon ή ε ζεηξά Street Fighter. Παηρλίδηα Λαβπξίλζωλ (maze) Τν πεξηβάιινλ κέζα ζην νπνίν θηλείηαη ν παίθηεο είλαη έλαο ιαβχξηλζνο ηνλ νπνίν πξέπεη λα εμεξεπλήζεη ζπρλά ελάληηα ζην ρξφλν, ηεξάησλ ή άιισλ παηθηψλ. Τν PacMan αλήθεη ζε απηήλ ηελ θαηεγνξία. Παηρλίδηα Πιαηθόξκαο (platform) Σε απηά ηα παηρλίδηα νη πίζηεο απνηεινχληαη απφ πιαηθφξκεο δηαθνξεηηθψλ επηπέδσλ ζηηο νπνίεο ν παίθηεο πεδά, ηξέρεη θαη ζθαξθαιψλεη ζθάιεο, πξνζπεξλψληαο εκπφδηα ή αληηπάινπο. Σπρλά απηά ηα παηρλίδηα πηνζεηνχλ θαη ζηνηρεία άιισλ θαηεγνξηψλ φπσο κάρεο ή φπια. Γηάζεκα παηρλίδηα απηήο ηεο θαηεγνξίαο είλαη ηα Donkey Kong, Sonic the Hedgehog, Mario θαη Rayman. Παξ φηη ππάξρνπλ αξθεηά παηρλίδηα πιαηθφξκαο κε ηξηζδηάζηαηα γξαθηθά, δελ έρνπλ ηελ απήρεζε πνπ είραλ νη δηζδηάζηαηνη πξφγνλνί ηνπο. Παηρλίδηα Βνιώλ (shooter) Tα shooter παηρλίδηα επηθεληξψλνληαη θπξίσο ζε κάρεο κε φπια, θπξίσο πηζηφιηα ή ππξαχινπο θηι. Φσξίδνληαη ζηα shooter πξψηνπ πξνζψπνπ (first-person shooter, FPS) θαη ζηα shooter ηξίηνπ πξνζψπνπ, βάζεη ηεο πξννπηηθήο απεηθφληζεο πνπ ρξεζηκνπνηεί ε θάκεξα ηνπ παηρληδηνχ. Τέηνηα παηρλίδηα είλαη νη ζεηξέο παηρληδηψλ Doom, Halo, Call of Duty, Counter-Strike θαη πνιιά άιια. Τα ηειεπηαία ρξφληα απηφ ην είδνο έρεη εμειηρζεί θαη ζηελ online εθδνρή ηνπ, φπνπ πνιινί παίθηεο παίδνπλ ηαπηφρξνλα ζαλ νκάδα ή ζαλ αληίπαινη κέζσ ηνπ internet (massively multiplayer online first person shooter: MMOFPS). 1.2.2. Παηρλίδηα πεξηπέηεηαο (Adventure) Τα adventure παηρλίδηα πεξηγξάθνληαη απφ κία ινγηθή παηρληδηνχ πνπ δελ ρξεζηκνπνηεί δξάζε θαη δελ απαηηεί αληαλαθιαζηηθέο θηλήζεηο απφ ηνλ παίθηε. Σπλήζσο απαηηνχλ ν παίθηεο λα ιχζεη θάπνηνπο γξίθνπο αιιειεπηδξψληαο κε ην πεξηβάιινλ ηνπ παηρληδηνχ θαη ηνπο ππφινηπνπο ραξαθηήξεο ηνπ παηρληδηνχ, ζπλήζσο ρσξίο ηελ εκπινθή ηνπ ζε θάπνηα κάρε. Έλα ραξαθηεξηζηηθφ παηρλίδη απηήο ηεο θαηεγνξίαο είλαη ην Myst ηνπ 1993, θαηά ην νπνίν ν παίθηεο εμεξεπλά έλα λεζί θαη ην παηρλίδη εμειίζζεηαη δηαθνξεηηθά βάζεη ησλ επηινγψλ πνπ θάλεη ν παίθηεο. 1.2.3. Παηρλίδηα δξάζεο πεξηπέηεηαο (action - adventure) Απηά ηα παηρλίδηα, φπσο είλαη πξνθαλέο, είλαη έλαο ζπλδηαζκφο ησλ παηρληδηψλ πεξηπέηεηαο θαη ησλ παηρληδηψλ δξάζεο. Απηά ηα παηρλίδηα απαηηνχλ ηφζν ηηο θπζηθέο ηθαλφηεηαο ηνπ παίθηε φπσο ζηα παηρλίδηα δξάζεο, φπσο γηα παξάδεηγκα λα ηξέρεη, λα μεπεξλά εκπφδηα ή λα κάρεηαη, φζν θαη ηηο λνεηηθέο ηθαλφηεηεο ηνπ παίθηε, φπσο ζηα παηρλίδηα πεξηπέηεηαο. Σπλήζσο ζε απηά ηα παηρλίδηα ζπιιέγνληαη αληηθείκελα, 14

ππάξρεη έλα ζελάξην, δηάινγνη θαη πνιινί ραξαθηήξεο. Τέηνηα παηρλίδηα είλαη ηα Legend of Zelda, God of War θαη ε ζεηξά Tomb Raider. 1.2.4. Παηρλίδηα πξνζνκνίωζεο θαηαζθεπώλ θαη δηαρείξηζεο (construction and management simulation, CMS) Σε απηά ηα παηρλίδηα ν παίθηεο θαιείηαη λα θαηαζθεπάζεη, λα επεθηείλεη θαη λα δηαρεηξηζηεί πφιεηο ή έξγα κε πεξηνξηζκέλνπο πφξνπο. Ο παίθηεο εδψ, θηίδεη θηίξηα γηα ηε ζηέγαζε ησλ πνιηηψλ ηεο πφιεο ηνπ, θπηεχεη δάζε, θάλεη έξγα χδξεπζεο θηι. κε ζθνπφ ηελ αλάπηπμε ηεο πφιεο ηνπ ζε ζεκείν πνπ λα έρεη απμαλφκελα θέξδε θη νη πνιίηεο ηνπ λα έρνπλ έλα πςειφ επίπεδν δηαβίσζεο. Ίζσο ην πην γλσζηφ παηρλίδη απηήο ηεο θαηεγνξίαο είλαη ην SimCity, πνπ είλαη αθφκα πνιχ δεκνθηιέο θαη έρεη επεξξεάζεη πνιχ ηα κεηαγελέζηεξα παηρλίδηα απηνχ ηνπ ηχπνπ. 1.2.5. Παηρλίδηα πξνζνκνίωζεο δωήο (life simulation) Tα παηρλίδηα πξνζνκνίσζεο δσήο πεξηζηξέθνληαη γχξσ απφ ην ρεηξηζκφ κίαο ή πεξηζζφηεξσλ δσληαλψλ νξγαληζκψλ είηε απηνί είλαη άλζξσπνη, είηε δψα ή αθφκα θη νηθνζπζηήκαηα. Τέηνηα παηρλίδηα είλαη ην Sims, έλα παηρλίδη ζην νπνίν ν παίθηεο ρεηξίδεηαη ηηο ζρέζεηο κεηαμχ ησλ ραξαθηήξσλ ηνπ παηρληδηνχ, ή θαη ηα Tamagotchi, φπνπ ν παίθηεο θξνληίδεη έλα εηθνληθφ θαηνηθίδην δψν. 1.2.6. Παηρλίδηα ξόιωλ (role playing, RPGs) Τα role-playing παηρλίδηα έρνπλ ηηο ξίδεο ηνπο ζηα παξαδνζηαθά RPGs κε ραξηί θαη κνιχβη φπσο ην Dungeons and Dragons. Ο παίθηεο ππνδχεηαη έλα ραξαθηήξα κε θάπνηα ζπγθεθξηκέλα ραξαθηεξηζηηθά (πρ. κάγνο ή πνιεκηζηήο) θαη πξνρσξά ζην παηρλίδη βάζεη ελφο πξνθαζνξηζκέλνπ ζελαξίνπ, αλαπηχζζνληαο ηηο ηθαλφηεηέο ηνπ θαη πνιεκψληαο αληηπάινπο γηα λα αλαθαιχςεη θαηλνχξηα θνκβηθά ζεκεία ηνπ παηρληδηνχ. Τέηνηα παηρλίδηα είλαη νη ζεηξέο Diablo, Final Fantasy θαη Fallout. πσο ζπλέβεη θαη κε ηα FPS παηρλίδηα, κε ηελ επξεία ρξήζε ηνπ internet θαη ηεο βειηίσζεο ησλ ηαρπηήησλ ζχλδεζεο ηα RPGs εμειίρζεθαλ θαη ζηελ online εθδνρή ηνπο, ηα MMORPGs, φπνπ ν θάζε παίθηεο ζπλδεδεκέλνο ζην δίθηπν ππνδχεηαη ην ραξαθηήξα ηνπ θαη ζπλεξγάδεηαη ή κάρεηαη άιινπο παίθηεο. Έλα πνιχ επηηπρεκέλν παηρλίδη απηήο ηεο θαηεγνξίαο κε παξαπάλσ απφ 11 εθαηνκκχξηα ελεξγνχο παίθηεο παγθνζκίσο είλαη ην World of Warcraft ηεο Blizzard. 1.2.7. Παηρλίδηα ζηξαηεγηθήο (strategy) Τα παηρλίδηα ζηξαηεγηθήο δίλνπλ έκθαζε ζηελ επηδέμηα θξίζε θαη πξνγξακκαηηζκφ ηνπ παίθηε κε ζθνπφ ηε λίθε. Ο παίθηεο πξέπεη λα ζρεδηάζεη κία ζεηξά απφ ελέξγεηεο ελαληίνλ ελφο ή πεξηζζφηεξσλ αληηπάισλ ζηνρεχνληαο ζηελ απνδπλάκσζή ηνπο. Σε απηά ηα παηρλίδηα ν παίθηεο έρεη κία ζθαηξηθή άπνςε ηνπ θφζκνπ ηνπ παηρληδηνχ θαη κπνξεί λα δηαηάζζεη ηηο κνλάδεο ηνπ ρσξίο πεξηνξηζκφ. Σε πνιιά απφ απηά ηα παηρλίδηα ζπρλά εκπιέθεηαη ην ζηνηρείν ηεο κάρεο θαη ησλ φπισλ, αιιά ζεκαληηθφ ξφιν παίδεη ε ηαθηηθή θη φρη ε ηχρε. Ο παίθηεο επίζεο ζπρλά θαιείηαη λα δηαρεηξηζηεί ηελ νηθνλνκία ηνπ θφζκνπ ηνπ θαη λα ηνλ εμεξεπλήζεη. Αμηνζεκείσηα παηρλίδηα απηήο ηεο θαηεγνξίαο είλαη νη ζεηξέο Civilization, Warcraft θαη Age of Empires. 15

1.2.8. Παηρλίδηα πξνζνκνίωζεο νρεκάηωλ Σηα παηρλίδηα πξνζνκνίσζεο νρεκάησλ ν παίθηεο θαιείηαη λα νδεγήζεη απηνθίλεηα ή αεξνπιάλα ζε έλα ξεαιηζηηθφ πεξηβάιινλ. Σε απηή ηελ θαηεγνξία ππάγνληαη ηα παηρλίδηα πξνζνκνίσζεο πηήζεο θαη ηα παηρλίδηα πξνζνκνίσζεο δηαζηεκφπινησλ, αιιά θαη ηα παηρλίδηα αγψλσλ ηαρχηεηαο, φπνπ ζπρλά ρξεζηκνπνηνχληαη θαη εηδηθά μερσξηζηά ρεηξηζηήξηα φπσο ηηκφληα θηι. 1.2.9. Άιιεο θαηεγνξίεο παηρληδηώλ Άιιεο δεκνθηιήο θαηεγνξίεο παηρληδηψλ είλαη ηα puzzle παηρλίδηα, ηα αζιεηηθά ή ηα κνπζηθά παηρλίδηα. Τα puzzle απαηηνχλ ινγηθή ζθέςε γηα λα ιχζεη ν παίθηεο γξίθνπο ή λα εμεξεπλήζεη πεξίπινθνπο ιαβπξίλζνπο. Τα αζιεηηθά παηρλίδηα πξνζνκνηψλνπλ δηάθνξα αζιήκαηα απφ πνδφζθαηξν ή κπάζθεη, κέρξη ηέλληο ή γθνιθ. Tέηνηα είλαη γηα παξάδεηγκα νη ζεηξέο FIFA θαη NBA Live. Κάπνηα άιια επηθεληξψλνληαη ζηε ζηξαηεγηθή θαη ζηε δηαρείξηζε πίζσ απφ ην άζιεκα. Έλα ηέηνην παηρλίδη είλαη ην Championship Manager φπνπ ν παίθηεο θαιείηαη λα δηαρεηξηζηεί κία πνδνζθαηξηθή νκάδα. Τα κνπζηθά παηρλίδηα ζπλήζσο θαινχλ ηνλ παίθηε λα αλαπαξάγεη κία ζπγθεθξηκέλε κνπζηθή κεισδία. Τειεπηαία, ηέηνηα παηρλίδηα, φπσο ην Guitar Hero ή ην RockBand έρνπλ γίλεη ηδηαίηεξα δεκνθηιή ζην επξχ θνηλφ. 16

2. Τεχνολογίες κι Εργαλεία για την Ανάπτυξη Παιχνιδιών 2.1. Σύγσπονα Επγαλεία για ηην ανάπηςξη παισνιδιών Τα πξνγξάκκαηα αλάπηπμεο παηρληδηψλ κεηαηξέπνληαη απφ ηνλ πεγαίν θψδηθα ζην εθηειέζηκν πξφγξακκα κέζσ ελφο compiler φπσο θάζε άιιν είδνο ινγηζκηθνχ. Ο πεγαίνο θψδηθαο κπνξεί λα γξαθεί ζε έλαλ απιφ editor θεηκέλνπ, αιιά ζπλήζσο πξνηηκάηαη θάπνην νινθιεξσκέλν πεξηβάιινλ αλάπηπμεο (Integrated Development Environment: IDE) εηδηθά ζρεδηαζκέλν γηα αλάπηπμε παηρληδηψλ. Ζ επηινγή ηνπ ηδαληθνχ IDE εμαξηάηαη ζπλήζσο απφ ηελ πιαηθφξκα γηα ηελ νπνία πξννξίδεηαη ην παηρλίδη. Τν Visual Studio.NET ηεο Microsoft θαη ην CodeWarrior είλαη γηα παξάδεηγκα, δχν πνιχ δεκνθηιή IDEs γηα ηελ αλάπηπμε παηρληδηψλ πνπ πξννξίδνληαη γηα ηα Windows ή ην Xbox. Πέξαλ ηνπ IDE, άιια εξγαιεία πνπ θαίλνληαη ρξήζηκα ζηελ αλάπηπμε ελφο παηρληδηνχ είλαη πξνγξάκκαηα γηα ηελ επεμεξγαζία ηνπ πεξηερνκέλνπ ηνπ παηρληδηνχ, πξνγξάκκαηα επεμεξγαζίαο εηθφλαο, ήρνπ ή 3D κνληεινπνίεζεο. Πνιχ ζεκαληηθφ ξφιν παίδεη επίζεο ν level editor, ην πεξηβάιινλ ζην νπνίν ζα αλαπηπρζνχλ ηα επίπεδα ηνπ παηρληδηνχ θαη είλαη ζπρλά εηδηθά ζρεδηαζκέλνο γηα ηηο αλάγθεο ηνπ εθάζηνηε παηρληδηνχ. Πξνηνχ μεθηλήζεη ε αλάπηπμε πξέπεη λα ιεθζνχλ θάπνηεο βαζηθέο απνθάζεηο ζρεηηθά κε ηε ζρεδίαζε, πνπ αθνξνχλ ηε γιψζζα πξνγξακκαηηζκνχ, ηηο θαη ηηο βηβιηνζήθεο πνπ ζα ρξεζηκνπνηεζνχλ ζηελ πινπνίεζε. 2.1.1. Γιώζζεο Πξνγξακκαηηζκνύ Ζ απφθαζε γηα ην πνηά γιψζζα πξνγξακκαηηζκνχ είλαη ε θαηαιιειφηεξε γηα ηελ αλάπηπμε ηνπ παηρληδηνχ εμαξηάηαη θπξίσο απφ ηελ πιαηθφξκα γηα ηελ νπνία πξννξίδεηαη ην παηρλίδη (Microsoft Windows, PlayStation, Xbox θηι.), απφ ηηο απαηηήζεηο γηα ηαρχηεηα ζηελ εθηέιεζε, απφ ηε γιψζζα ζηελ νπνία είλαη γξακκέλα ηα δηάθνξα APIs, κεραλέο γξαθηθψλ ή βηβιηνζήθεο πνπ πηζαλψο ζα ρξεζηκνπνηεζνχλ θαζψο θπζηθά θη απφ ηελ εμνηθείσζε ηνπ πξνγξακκαηηζηή κε ηε γιψζζα. Ζ θαη'εμνρήλ γιψζζα πνπ πξνηηκάηαη ζήκεξα γηα ηελ αλάπηπμε παηρληδηψλ είλαη ε C++, θπξίσο ιφγσ αληηθεηκελνζηξέθεηαο θη επεηδή ε C++ κεηαγισηηίδεηαη ζε γιψζζα κεραλήο, ζηε γιψζζα δειαδή πνπ ρξεζηκνπνηεί ε πιαηθφξκα γηα ηελ νπνία πξννξίδεηαη ην παηρλίδη. Ζ Java θαη ε C πξνηηκνχληαη θη απηέο αιιά είλαη αθαηάιιειεο γηα θάπνηεο πινπνηήζεηο. Ζ Java γηα παξάδεηγκα πξνηηκάηαη γηα ηελ αλάπηπμε παηρληδηψλ πνπ πξννξίδνληαη γηα θηλεηά ηειέθσλα. Ζ Assembly είλαη απαξαίηεηε ζηνλ πξνγξακκαηηζκφ παηρληδηψλ γηα θάπνηεο θνλζφιεο ή ζε ξνπηίλεο πνπ πξέπεη λα είλαη φζν ην δπλαηφλ ηαρχηεξεο. Γιψζζεο φπσο ε C#, ε Ada θη ε Python ρξεζηκνπνηνχληαη θπξίσο ζηελ αλάπηπμε εξαζηηερληθψλ παηρληδηψλ θη φρη ηφζν ζηε βηνκεραλία παηρληδηψλ. 17

2.1.2. APIs θαη Βηβιηνζήθεο Μία αθφκα ζεκαληηθή απφθαζε αθνξά ηα APIs θαη ηηο βηβιηνζήθεο πνπ πηζαλψο ζα ρξεζηκνπνηεζνχλ. Σήκεξα, ππάξρεη κία πιεζψξα βηβιηνζεθψλ θαη APIs εηδηθά γηα ζέκαηα πξνγξακκαηηζκνχ παηρληδηψλ. Απηέο ρεηξίδνληαη ζέκαηα πνπ έρνπλ λα θάλνπλ κε ηνλ ήρν, ηελ είζνδν δεδνκέλσλ απφ ην ρξήζηε κέζσ πιεθηξνινγίνπ, πνληηθηνχ ή άιισλ κέζσλ, θαζψο επίζεο θαη ηελ απφδνζε ησλ γξαθηθψλ (graphics rendering). Υπάξρνπλ αθφκα βηβιηνζήθεο πνπ ρεηξίδνληαη ζέκαηα ηερλεηήο λνεκνζχλεο θαη νινθιεξσκέλεο κεραλέο γξαθηθψλ πνπ ξπζκίδνπλ ηα πεξηζζφηεξα δεηήκαηα ηνπ πξνγξακκαηηζκνχ ηνπ παηρληδηνχ θη απαηηνχλ κνλάρα ηνλ πξνγξακκαηηζκφ ηεο ινγηθήο ηνπ παηρληδηνχ. Τν DirectX ηεο Microsoft είλαη έλα ηέηνην APΗ, πνπ ρεηξίδεηαη κία πιεζψξα ζεκάησλ φπσο ζέκαηα γξαθηθψλ, ήρνπ, εηζφδνπ, δηαζχλδεζεο θη άιια. Ζ επηινγή ησλ ηδαληθψλ βηβιηνζεθψλ θαη APIs εμαξηάηαη θη απηή θπξίσο απφ ηελ πξννξηδφκελε πιαηθφξκα. Βηβιηνζήθεο πνπ ρξεζηκνπνηνχληαη γηα παξάδεηγκα ζηελ αλάπηπμε παηρληδηψλ γηα πιαηθφξκεο ηεο Microsoft δελ είλαη δηαζέζηκεο γηα ην PlayStation θη αληίζηξνθα. Παξ'φι'απηά, ππάξρνπλ ζπζηήκαηα αλάπηπμεο παηρληδηψλ (game frameworks) πνπ επηηξέπνπλ ή δηεπθνιχλνπλ ηε κεηάβαζε απφ κία πιαηθφξκα ζε κία δηαθνξεηηθή, θη έηζη ν πξνγξακκαηηζκφο κπνξεί λα γίλεη ζε κία γιψζζα θαη ην παηρλίδη λα κπνξεί λα εθηειεζηεί ζε δηαθνξεηηθέο πιαηθφξκεο. 2.1.3. APIs Γξαθηθώλ Τα γξαθηθά ζε έλα παηρλίδη, είηε απηά είλαη δχν δηαζηάζεσλ είηε ηξηψλ, είλαη ίζσο ην ζεκαληηθφηεξν κέξνο ελφο παηρληδηνχ, ζπλεπψο ηα APIs γξαθηθψλ είλαη έλα εμίζνπ πνιχ ζεκαληηθφ κέξνο ηεο αλάπηπμεο. Ζ επηινγή ηνπ API γξαθηθψλ πνπ ζα ρξεζηκνπνηεζεί έρεη λα θάλεη ηφζν κε ηελ πξννξηδφκελε πιαηθφξκα φζν επίζεο θαη κε ζέκαηα πιηθνχ, δειαδή θαηά πφζν είλαη ππνζηεξηδφκελα θαη ζπκβαηά κε ηηο θάξηεο γξαθηθψλ ηνπ εκπνξίνπ. Τα δχν πην δεκνθηιή APIs γξαθηθψλ είλαη ην Direct3D θαη ε ΟpenGL θαη ε επηινγή κεηαμχ ησλ δχν είλαη έλα δήηεκα γηα ην νπνίν ππάξρεη δηακάρε αλάκεζα ζηνπο πξνγξακκαηηζηέο παηρληδηψλ. Παξφιν πνπ ηα πξψηα ρξφληα θαη θαηά ηελ εμέιημε ηνπ DirectX, ε OpenGL επηθξαηνχζε σο πην ιεηηνπξγηθή θαη παξα φιεο ηηο δηαθνξέο πνπ παξνπζηάδνπλ νη ζεκεξηλέο δηαλνκέο ηνπ DirectX θαη ηεο OpenGL, πιένλ θαη ηα δχν API είλαη εμίζνπ απνδνηηθά θη εχρξεζηα. Πέξαλ απηψλ ησλ δχν APIs γξαθηθψλ ππάξρνπλ άιια φπσο ηα SDL, Alegro, OpenMAX, OpenML, OpenAL, OpenCL, FMOD. Πνιιά απφ απηά ηα APIs έρνπλ αλνηρηφ ινγηζκηθφ ή πξννξίδνληαη γηα ρξήζε ζε δηαθνξεηηθέο πιαηθφξκεο. Direct3D θαη OpenGL Direct3D Τν Direct3D ζπγθαηαιέγεηαη ζηε ζπιινγή ηνπ DirectX ηεο Microsoft θαη δηαηίζεηαη ειεχζεξα. Τν Direct3D είλαη ην API εθείλν ηεο ζπιινγήο πνπ ρεηξίδεηαη ηα γξαθηθά. Έλα απφ ηα θχξηα ραξαθηεξηζηηθά ηνπ DirectX θαη ζπλεπψο θαη ηνπ Direct3D, πνπ ζπρλά ηνλίδεηαη σο αδπλακία ηνπ, είλαη φηη είλαη ζρεδηαζκέλν απνθιεηζηηθά γηα πιαηθφξκεο ηεο Microsoft θαη θπξίσο γηα ηα Windows. OpenGL Ζ OpenGL (Open Graphics Library) αλαπηχρζεθε απφ ηε Silicon Graphics Inc. θαη απφ ην 2006 πέξαζε ζηε δηαρείξηζε ηνπ Khronos Group. Δίλαη αληίζηνηρα έλα API γηα γξαθηθά θαη ζε αληίζεζε κε ην Direct3D είλαη ζρεδηαζκέλν γηα ρξήζε ζε πνιιέο 18

δηαθνξεηηθέο πιαηθφξκεο φπσο Microsoft Windows, UNIX- based ιεηηνπξγηθά ζπζηήκαηα (Mac OS X, Linux, OpenSolaris). Ζ OpenGL είλαη επίζεο ε βαζηθή βηβιηνζήθε γξαθηθψλ γηα ην iphone, ην Android θαη ην ιεηηνπξγηθφ Symbian. Πιένλ θαη ηα δχν APIs ππνζηεξίδνπλ ιεηηνπξγίεο φπσο texture mapping, Z-buffering, alpha blending θαη πνιιέο άιιεο. Direct3D ή OpenGL; Αθνινπζεί έλαο ζπλνπηηθφο πίλαθαο κε θάπνηεο βαζηθέο δηαθνξέο ησλ δχν ηερλνινγηψλ: Direct3D vs OpenGL Θέκα Direct3D OpenGL Γιώζζα Υπνζηεξηδόκελεο Πιαηθόξκεο Βηβιηνζήθε Βνεζεηηθώλ Πξνγξακκάηωλ Δπεθηαζηκόηεηα Hardware Acceleration Φξεζηκνπνηεί C++. Γηαζέζηκν θαη ζε C, θαη ζε φιεο ηηο.nδτ γιψζζεο Windows, XBox, XBox 360, ηα ζεκέιηα γηα ην XNA Δθηεηακέλε βνεζεηηθή βηβιηνζήθε (D3DX) Τν Direct3D 9 ρξεζηκνπνηεί ηα CAPS (capabilities bits) γηα λα εμεηάζεη ηα ππνζηεξηδφκελα ραξαθηεξηζηηθά, ην Direct3D 10 απαηηεί λα είλαη φια ηα ραξαθηεξηζηηθά ππνζηεξηδφκελα. Γελ κπνξεί λα ρξεζηκνπνηήζεη ραξαθηεξηζηηθά ηνπ hardware πνπ δελ ππνζηεξίδνληαη απφ ην API (ην API αλαλεψλεηαη αλά δχν κήλεο). Γηαζέζηκε ζε C, Java, Assembly, Pascal, Python, Perl, Ruby, C# θη άιιεο γιψζζεο. Windows, Linux, MacOS, Gamecube, Silicon Graphics Workstations, BeOS, [iphone, Android, Symbian (Open GL ES)] Μηθξφηεξε βηβιηνζήθε βνεζεηηθψλ πξνγξακκάησλ (GLU), πνπ παξέρεη ιηγφηεξν πςεινχ επηπέδνπ ζπλαξηήζεηο, φκσο κπνξεί λα εθηειέζεη πνιιέο απφ απηέο ηηο ζπλαξηήζεηο ζε ρακειφ επίπεδν ρσξίο ηελ αλάγθε δηεπαθψλ πςεινχ επηπέδνπ. Φξεζηκνπνηεί έλα κεραληζκφ (extension loading) κε ηνλ νπνίν νη εθαξκνγέο κπνξνχλ λα ρξεζηκνπνηήζνπλ λεφηεξεο επεθηάζεηο ηεο θάξηαο γξαθηθψλ ρσξίο απηέο λα έρνπλ ελζσκαησζεί αθφκα ζηε βαζηθή βηβιηνζήθε ηεο OpenGL. Μπνξεί λα ρξεζηκνπνηήζεη ραξαθηεξηζηηθά ηνπ hardware πνπ δελ ππνζηεξίδνληαη απφ ην API (δηαθνξεηηθέο απαηηήζεηο βάζεη ηεο θάξηαο γξαθηθψλ). Πίλαθαο 1: Σπγθξηηηθόο πίλαθαο Direct3D θαη OpenGL [1] 2.2. Microsoft XNA Τν 2002 ε Μicrosoft παξνπζίαζε ην Managed DirectX, κία θαηλνχξηα εθδνρή ηνπ DirectX ζπκβαηή κε ην.νδτ Framework. Απηφ ην API κπνξνχζε λα εθκεηαιιεπηεί ηε 19

ιεηηνπξγηθφηεηα ηνπ DirectX κέζα απφ.net εθαξκνγέο ρξεζηκνπνηψληαο ζπκβαηέο γιψζζεο φπσο ε managed C++ ή ε C#, δηεπθνιχλνληαο αθφκα πεξηζζφηεξν ζηε ρξήζε ηνπ DirectX API. Τν 2004 ε Μicrosoft παξνπζίαζε ην Microsoft ΦΝΑ πνπ ήξζε λα πάξεη ηε ζέζε ηνπ Managed DirectX φζν αθνξά ηελ αλάπηπμε παηρληδηψλ. Τν ΦΝΑ είλαη βαζηζκέλν ζην DirectX, αιιά δελ είλαη απιψο κφλν έλα framework γηα πνιπκέζα φπσο ην DirectX. Πεξηιακβάλεη κία πνηθηιία εξγαιείσλ θη έλα εηδηθφ ελζσκαησκέλν πεξηβάιινλ αλάπηπμεο (IDE), ην XNA Game Studio, εηδηθά ζρεδηαζκέλα γηα ηελ αλάπηπμε παηρληδηψλ. Τν ΦΝΑ Framework απνκνλψλεη θαη ρεηξίδεηαη κφλν ηνπ ηηο ιεπηνκέξεηεο ρακεινχ επηπέδνπ πνπ εκπιέθνληαη ζηνλ πξνγξακκαηηζκφ ελφο παηρληδηνχ θη έηζη δίλεη ηε δπλαηφηεηα ζην ρξήζηε λα αθνζησζεί πεξηζζφηεξν ζην πεξηερφκελν, ηε ινγηθή θαη ηηο ηδηαίηεξεο ιεηηνπξγίεο ηνπ παηρληδηνχ. Υπνζηεξίδεη ηφζν παηρλίδηα δηζδηάζηαησλ γξαθηθψλ φζν θαη ηξηζδηάζηαησλ, κε εκπινπηηζκέλν πεξηέρνκελν θαη εχθνιε πξφζβαζε θαη ρεηξηζκφ ηνπ ερεηηθνχ πιηθνχ θαη ησλ εηζφδσλ ηνπ παηρληδηνχ. Τν XNA Framework ππνζηεξίδεη ηελ αλάπηπμε παηρληδηψλ γηα PC κε Windows ιεηηνπξγηθφ, γηα ηελ παηρληδνκεραλή ηνπ Xbox 360 θαη γηα ην Zune, ην θνξεηφ media player ηεο Microsoft. 2.2.1. Βαζηθά κέξε ηνπ ΦΝΑ Framework Τν ΦΝΑ Framework ρσξίδεηαη ζηα παξαθάησ ηξία βαζηθά κέξε: ΦΝΑ Graphic Engine (ζην Microsoft.Xna.Framework.dll) πνπ πινπνηεί ηα βαζηθά ζηνηρεία ηεο κεραλήο γξαθηθψλ ηνπ παηρληδηνχ, φπσο γηα παξάδεηγκα ηηο ζπλαξηήζεηο γηα ηα δηαλχζκαηα θαη ηα νξζνγψληα πνπ ρξεζηκνπνηνχκε γηα ηηο ζέζεηο κέζα ζην παηρλίδη, ηηο βνεζεηηθέο καζεκαηηθέο ζπλαξηήζεηο, ηηο ζπλαξηήζεηο πνπ δεκηνπξγνχλ ην παξάζπξν ηνπ παηρληδηνχ θ.α. ΦΝΑ Game Application Model (ζην Microsoft.Xna.Framework.Game.dll) πνπ πινπνηεί ηηο βαζηθέο ιεηηνπξγίεο ηνπ παηρληδηνχ, φπσο ηελ αξρηθνπνίεζε θαη ηελ αλαλέσζε ηεο θαηάζηαζεο ηνπ παηρληδηνχ, ηε ζρεδίαζε ησλ γξαθηθψλ, ηελ θιάζε δεκηνπξγφ ηνπ παηρληδηνχ θ.α. ΦΝΑ Content Pipeline (ζην Microsoft.Xna.Framework.Content.Pipeline.dlls) πνπ ρξεζηκνπνηείηαη γηα ηελ εηζαγσγή, κεηαγιψηηηζε θαη θφξησζε ησλ ζηνηρείσλ ηνπ παηρληδηνχ, φπσο ηηο εηθφλεο (textures), ηα 3D κνληέια ή ηνπο ήρνπο. 20

Εηθόλα 6:Τα ηξία βαζηθά κέξε ηνπ κνληέινπ κηαο XNA εθαξκνγήο [2] ια απηά ηα.dll αξρεία πνπ αλαθέξνληαη, είλαη πινπνηεκέλα ζε C# θαη είλαη managed dll αξρεία (απαίηνπλ δειαδή θη εθηεινχληαη απφ κηα CLR (Common Language Runtime) 3 εηθνληθή κεραλή ). Aπηά ηα αξρεία κπνξνχλ λα αλνηρζνχλ κε έλα εξγαιείν φπσο ην Reflection 4, έηζη ψζηε λα κπνξέζεη ν ρξήζηεο λα δεη αθξηβψο πσο ιεηηνπξγνχλ. Τα πεξηζζφηεξα ηκήκαηα ηεο εζσηεξηθήο ιεηηνπξγηθφηεηαο απιά θαινχλ ηα.dll αξρεία ηνπ DirectX απινπνηψληαο έηζη ηηο δηαδηθαζίεο. 2.2.2. Τν κνληέιν εθαξκνγήο ζην XNA θαη ε θιάζε Game πσο θαίλεηαη ζηελ Δηθφλα 1, θάζε πξφγξακκα ζην XNA ρξεζηκνπνηεί κία θιάζε Game πνπ είλαη θαη ε θαξδηά ηνπ παηρληδηνχ. Απηή ε θιάζε πεξηιακβάλεη φια ηα ζεκαληηθά ζηνηρεία ηνπ παηρληδηνχ, ηε ζπζθεχε γξαθηθψλ (graphics device), ηηο ξπζκίζεηο ησλ παξαζχξσλ θαη ην δηαρεηξηζηή ηνπ πεξηερνκέλνπ ηνπ παηρληδηνχ (content manager). Σε απηήλ ηελ θιάζε κπνξνχλ λα πξνζηεζνχλ ξνπηίλεο γηα ην ρεηξηζκφ ησλ εηζφδσλ θαη ηνπ ήρνπ. Οπνηαδήπνηε ιεηηνπξγία εθηειεί ην παηρλίδη ζε πςειφ επίπεδν πεγάδεη κε θάπνηνλ ηξφπν απφ απηήλ εδψ ηελ θιάζε ή βξίζθεηαη ζε θάπνηα άιιε ζπληζηψζα πνπ κπνξεί λα πξνζπειαζηεί απφ ηελ θιάζε Game. Οη πην ζεκαληηθέο κέζνδνη ηεο θιάζεο Game είλαη νη αθφινπζεο: Initialize () LoadContent () Update (GameTime gametime) Draw (GameTime gametime) Απηέο νη κέζνδνη δεκηνπξγνχληαη απηφκαηα κέζα ζηελ θιάζε Game θαη είλαη ηα ζεκεία ζηα νπνία εθηεινχληαη νη πην ζεκαληηθέο ιεηηνπξγίεο κέζα ζε έλα παηρλίδη. 3 To Common Language Runtime (CLR) είλαη κία ζεκειηαθή ζπληζηψζα ηνπ Microsoft.NET. Δίλαη ε πινπνίεζε ηεο Microsoft γηα ην πξφηππν Common Language Infrastructure (CLR), πνπ νξίδεη έλα πεξηβάιινλ εθηέιεζεο γηα ηνλ θψδηθα ησλ πξνγξακκάησλ. Σην CLR ν θψδηθαο εθθξάδεηαη ζε κηα κνξθή bytecode πνπ νλνκάδεηαη Common Intermediate Language (CIL, παιαηφηεξα γλσζηή σο MSIL Microsoft Intermediate Language). 4 Τν εξγαιείν Reflection κπνξεί λα βξεζεί ζηε δηεχζπλζε: http://www.aisto.com/roeder/dotnet/ 21

πσο ππνδειψλεηαη θη απφ ην φλνκα, ε Initialize είλαη ε κέζνδνο εθείλε πνπ μεθηλάεη ην παηρλίδη, νξίδεη φιεο ηηο αξρηθέο ξπζκίζεηο θαη γεληθψο αξρηθνπνηεί νηηδήπνηε ρξεηάδεηαη γηα ην παηρλίδη. Ζ κέζνδνο LoadContent, θνξηψλεη νπνηνδήπνηε πεξηερφκελν ζα ρξεζηκνπνηεζεί ζην παηρλίδη. Ωο πεξηερφκελν ζεσξνχληαη νπνηαδήπνηε αξρεία εηθφλαο ή 3D κνληέια, ερεηηθά αξρεία ή αξρεία γξακκαηνζεηξψλ. Δδψ γηα παξάδεηγκα, θνξηψλεηαη ε εηθφλα ηεο θηγνχξαο ηνπ παίθηε, ην background ηνπ παηρληδηνχ ή νη ήρνη πνπ θάλεη ν παίθηεο. Ζ κέζνδνο Update θαιείηαη πξηλ ζρεδηαζηεί θάζε πιαίζην εηθφλαο (frame) γηα λα αλαλεσζεί ε ηξέρνπζα δηάξθεηα ηνπ παηρληδηνχ (game time), νη είζνδνη, νη ήρνη θη νηηδήπνηε άιιν δελ είλαη νξαηφ ζηελ νζφλε. Ζ Draw θαιείηαη ζην ηέινο γηα λα ζρεδηάζεη ζηελ νζφλε θάζε frame ηνπ παηρληδηνχ. Δδψ δειαδή πξνγξακκαηίδεηαη ν ηξφπνο ηεο εκθάληζεο θάζε frame ζην παηρλίδη, ζε πνηφ ζεκείν ηνπ παξαζχξνπ ζα ζρεδηαζηεί θάζε εηθφλα ή ε θηγνχξα ηνπ παίθηε, κε ηη ρξσκαηηζκφ θη άιιεο ηέηνηεο ιεπηνκέξεηεο. Υπάξρνπλ δχν ηξφπνη λα νξηζηεί ην ρξνληθφ δηάζηεκα πνπ παξεκβάιιεη αλάκεζα ζε δχν θιήζεηο ηεο Update. Ο πξψηνο ηξφπνο είλαη λα κε πξνθαζνξηζκέλν ρξνληθφ δηάζηεκα απφ ηελ πξνεπηινγή θη ν δεχηεξνο ηξφπνο είλαη κε ρξνληθφ δηάζηεκα κεηαβιεηήο πνπ νξίδεηαη απφ ην ρξήζηε. ηαλ δεκηνπξγεζεί κία λέα θιάζε Game, ην ρξνληθφ δηάζηεκα πνπ παξεκβάιιεη αλάκεζα ζε δχν θιήζεηο ηεο Update είλαη πξνθαζνξηζκέλν ζην 1/60 ηνπ δεπηεξνιέπηνπ. Απηφ νξίδεηαη ζηελ ηδηφηεηα ηεο Game, TargetElapsedTime (Microsoft.Xna.Framework.Game.TargetElapsedTime). Κάζε θνξά πνπ απηφ ην ρξνληθφ δηάζηεκα έξρεηαη ζε πέξαο, ε Update θαιείηαη. Μφιηο ε Update εθηειεζηεί θη εάλ δελ έρεη πεξάζεη απηφ ην πξνθαζνξηζκέλν ρξνληθφ δηάζηεκα, ηφηε θαιείηαη ε Draw. Αθνχ θιεζεί ε Draw, εάλ έρεη έξζεη ε ζηηγκή λα θιεζεί ε Update, ηφηε θαιείηαη, αιιηψο ε Draw κέλεη ζε αλακνλή κέρξη λα έξζεη ε ζηηγκή πνπ πξέπεη λα θιεζεί ε Update μαλά. Δάλ ε Update αξγεί λα εθηειεζηεί, ηφηε ε θιάζε Game μαλαθαιεί ηελ Update ρσξίο λα θαιέζεη ηελ Draw ζην ελδηάκεζν. ηαλ δειαδή κία θιήζε ηεο Update εθηειείηαη γηα κεγαιχηεξν ρξνληθφ δηάζηεκα απφ ην πξνθαζνξηζκέλν, ηφηε ε Game απνθξίλεηαη θαιψληαο ηελ Update επηπιένλ θνξέο θαη ξίρλεη ηα ζρεηηθά frames έηζη ψζηε λα κπνξέζεη λα ζπγρξνληζηεί. Με απηή ηε ιεηηνπξγία ε Game εγγπάηαη φηη ζα έρεη θαιέζεη φζεο θνξέο αθξηβψο ρξεηάδεηαη ηελ Update, κφιηο θαηαθέξεη λα επαλέιζεη κεηά απφ απηήλ ηελ επηβξάδπλζε θαη ν βξφγρνο ηεο ινγηθήο ηνπ παηρληδηνχ ζα έρεη πξνιάβεη λα ζπκβαδίζεη. [3] Ήδε απφ απηήλ ηελ πνιχ ζπλνπηηθή πεξηγξαθή ηνπ XNA Framework θαη ηεο βαζηθήο θιάζεο Game, γίλεηαη θαηαλνεηφ φηη ην ΦΝΑ δηεπθνιχλεη πνιχ ηελ αλάπηπμε ελφο παηρληδηνχ κε ηηο εηδηθέο βηβιηνζήθεο πνπ πξνζθέξεη, απινπνηψληαο βαζηθέο δηαδηθαζίεο πνπ ζε άιια APIs είλαη πεξίπινθεο θη απαηηνχλ πνιχ θψδηθα. Ζ ρξήζε ηεο C# ζε ζπλδηαζκφ κε ην ΦΝΑ Game Studio 3.1 ζην Visual Studio 2008, θάλεη ηελ αλάπηπμε ελφο παηρληδηνχ αθφκα πην πξνζηηή. Ζ C# είλαη κηα απιή θαη κνληέξλα αληηθεηκελνζηξαθήο γιψζζα πξνγξακκαηηζκνχ γεληθνχ ζθνπνχ. Δίλαη ηδηαίηεξα νηθνλνκηθή φζνλ αθνξά ζέκαηα κλήκεο θαη απαηηήζεηο επεμεξγαζηή, γη'απηφ απνδεηθλχεηαη κηα πνιχ θαιή επηινγή γηα αλάπηπμε παηρληδηψλ. 22

3. Το δικό μας παιχνίδι 3.1. Η ιδέα Σθνπφο απηήο ηεο δηπισκαηηθήο εξγαζίαο ήηαλ ε δεκηνπξγία ελφο δηζδηάζηαηνπ παηρληδηνχ ζην XNA Framework. Βαζηθή ηδέα ππήξμε ε αλάπηπμε ελφο δηζδηάζηαηνπ παηρληδηνχ ζε ζηπι platform, πνπ λα ζπλδηάδεη ηηο ηερληθέο ηεο θίλεζεο ζε κία νζφλε θαη ηεο θίλεζεο ζε νζφλε πνπ αθνινπζεί ηελ θίλεζε ηνπ παίθηε. Κχξην ραξαθηεξηζηηθφ ηνπ παηρληδηνχ ζα έπξεπε λα είλαη ην ζηνηρείν ηεο εμεξεχλεζεο ησλ θφζκσλ ηνπ παηρληδηνχ, νη θφζκνη δειαδή λα αλαθαιχπηνληαη ζηαδηαθά θαη λα κελ είλαη νξαηνί εμ'νινθιήξνπ ζηνλ παίθηε απφ ηελ αξρή. Έλα ζεκείν πνπ ήηαλ πνιχ ζεκαληηθφ ζηελ εμέιημε απηήο ηεο αξρηθήο ηδέαο ήηαλ ην ζηπι θαη ην χθνο πνπ ζα πηνζεηνχζε ην παηρλίδη ζηα γξαθηθά ηνπ. Έρνληαο ηελ ηδέα γηα έλα παηρλίδη απιφ ζηε ζχιιεςή ηνπ θαη ηεο -ζρεηηθά παιαηφηεξεο- λννηξνπίαο ησλ παιηψλ, δεκνθηιψλ platform παηρληδηψλ, ην χθνο ησλ γξαθηθψλ ήηαλ ην κέξνο εθείλν πνπ ζα έθαλε ην παηρλίδη πην μερσξηζηφ. Τν ζηπι ησλ γξαθηθψλ πνπ πηνζεηήζεθε θηλείηαη ζηα πιαίζηα ηεο pixel art 5 θαη ηεο δσγξαθηθήο ζε αθνπαξέια, δίλνληαο έηζη έλα κηληκαιηζηηθφ χθνο ζην παηρλίδη. Γηα λα πξαγκαηνπνηεζεί απηή ε ηδέα, ε αλάπηπμε ηνπ παηρληδηνχ δελ πεξηνξίζηεθε ζηνλ πξνγξακκαηηζκφ κνλάρα ηεο εθαξκνγήο ηνπ παηρληδηνχ θαη ηεο ινγηθήο ηνπ, αιιά επεθηάζεθε θαη ζηελ πινπνίεζε ελφο επεμεξγαζηή ησλ επηπέδσλ (level editor) εηδηθά ζρεδηαζκέλν ψζηε λα απνηππψζεη απηφ ην χθνο ζηα γξαθηθά. 3.2. Ο Level Editor Τν πξψην βήκα γηα ηελ αλάπηπμε απηνχ ηνπ παηρληδηνχ ήηαλ ε αλάπηπμε ελφο εηδηθνχ εξγαιείνπ, ψζηε λα κπνξεί ν ρξήζηεο λα δεκηνπξγεί ηνπο ράξηεο γηα ηα δηαθνξεηηθά επίπεδα ηνπ παηρληδηνχ. Μέζσ ηνπ level editor κπνξνχλ λα νξηζηνχλ ηφζν ην ζρέδην ηνπ επηπέδνπ φζν θαη ηα δηάθνξα ραξαθηεξηζηηθά ηνπ, φπσο ηα ζεκεία πνπ είλαη έδαθνο ή απξνζπέιαζηα, ηα ζεκεία πνπ είλαη πδάηηλα ή αέξαο, ηα ζεκεία πνπ ππάξρνπλ ηα δηάθνξα αληηθείκελα πνπ ζπιιέγεη ν παίθηεο. Ο ράξηεο ησλ επηπέδσλ έρεη έλα ζηαζεξφ κέγεζνο θαη ρσξίδεηαη ζε πιαθίδηα (tiles) επίζεο ζηαζεξνχ κεγέζνπο πνπ είλαη θαη ε βαζηθή κνλάδα κέηξεζεο ηνπ ράξηε. Ο ρξήζηεο κπνξεί λα γεκίζεη ηα tiles ηνπ ράξηε κε ρξψκα απφ ηελ παιέηα ηνπ editor θη έηζη λα δσγξαθίζεη ηνλ θφζκν πνπ ζέιεη, φπσο ζα δσγξάθηδε ην ράξηε ζε έλα ραξηί αθνπαξέιαο. 3.2.1. Σρεδηαζκόο ηνπ πεξηβάιινληνο ηνπ ράξηε Ο ρξήζηεο πξέπεη πξψηα λα επηιέμεη ηε ρξσκαηηθή πεξηνρή απφ tiles ηεο παιέηαο πνπ επηζπκεί θη έπεηηα λα ηε κεηαθέξεη ζην πιαίζην ηνπ ράξηε θαη ζηε ζπγθεθξηκέλε πεξηνρή πνπ ζέιεη λα δσγξαθίζεη, απιά θηλψληαο ην πνληίθη ηνπ κέζα ζηελ πεξηνρή 5 Pixel art είλαη κία κνξθή ςεθηαθήο ηέρλεο πνπ νη εηθφλεο επεμεξγάδνληαη ζην επίπεδν ησλ pixel θαη δεκηνπξγνχλ έηζη κία εηθφλα πνπ κνηάδεη κε κσζατθφ θαη πεξηνξίδεη ηε ιεπηνκέξεηα. 23

απεηθφληζεο ηνπ ράξηε (Δηθφλα 7). Μφιηο ην πνληίθη πεξάζεη ζηελ πεξηνρή απεηθφληζεο ηνπ ράξηε ν θέξζνξαο ηνπ πνληηθηνχ ζπλνδεχεηαη απφ ηελ επηιεγκέλε ρξσκαηηθή επηινγή γηα πεξηζζφηεξε ζαθήλεηα. Εηθόλα 7: Επηινγή ρξωκαηηθήο πεξηνρήο από ηελ παιέηα θαη ηνπνζέηεζε ζην ράξηε Ο παίθηεο κπνξεί λα δηαιέμεη κεγάιεο ρξσκαηηθέο πεξηνρέο απφ ηελ παιέηα ή κηθξφηεξεο ηηο νπνίεο ζα επαλαιάβεη κέζα ζηνλ ράξηε. Ο ρξήζηεο κπνξεί λα ζχξεη ην πνληίθη κέζα ζηελ πεξηνρή απεηθφληζεο ηνπ ράξηε κε επηιεγκέλε κία ρξσκαηηθή πεξηνρή γηα λα ηελ ελαπνζέζεη ζε φιεο ηηο πεξηνρέο ηηο νπνίεο πεξλάεη ην πνληίθη. Ο ρξήζηεο κπνξεί λα ζβήζεη θάπνηα απφ ηα tiles κεκνλσκέλα ή νιφθιεξεο νξζνγψληεο πεξηνρέο, επηιέγνληαο απφ ην κελνχ Map Drawing Tools, ηε ιεηηνπξγία Erase Tiles (Δηθφλα 8). Γηα λα επηζηξέςεη ζηε ιεηηνπξγία ζρεδηαζκνχ, πξέπεη λα επηιέμεη απφ ην ίδην κελνχ ηε ιεηηνπξγία Copy Tiles. Εηθόλα 8: Level Editor, Μελνύ Επηινγώλ Map Drawing Tools : Erase Tiles 24

Σε απηφ ην ζηάδην ν ρξήζηεο ρξεηάδεηαη απιά λα δσγξαθίζεη ηνλ θφζκν ηνπ επηπέδνπ ζα κηα αλαπαξάζηαζε. Γηα παξάδεηγκα, αλ ζέιεη ζε κία πεξηνρή ηνπ ράξηε λα ππάξρεη έδαθνο, αξθεί λα ρξσκαηίζεη απηήλ ηελ πεξηνρή κε ην ρξψκα ηνπ εδάθνπο πνπ ζέιεη, ή αλ ζέιεη θάπνηα πεξηνρή λα είλαη πδάηηλε, αξθεί λα ηελ ρξσκαηίζεη αληίζηνηρα. Ζ ζχλδεζε ησλ tiles κε θάπνηα ηδηφηεηα κπνξεί λα γίλεη αξγφηεξα. Παξφηη νη δηαδηθαζίεο ρξσκαηηζκνχ ηνπ ράξηε θαη αλάζεζεο ηδηνηήησλ ζηα tiles ηνπ ράξηε είλαη αλεμάξηεηεο κεηαμχ ηνπο, πνιιέο θνξέο είλαη ρξήζηκν λα ζπλδένληαη γηα εμνηθνλφκεζε ρξφλνπ. Μία ηέηνηα πεξίπησζε είλαη φηαλ ν ρξήζηεο επηζπκεί λα νξίζεη θαηά ηε δηάξθεηα ηνπ ζρεδηαζκνχ, ηφζν ην ρξψκα κίαο πεξηνρήο φζν θαη ηελ ηδηφηεηά ηεο σο ζηέξεε επηθάλεηα (έδαθνο). Γη απηήλ ηελ πεξίπησζε, ππάξρεη ε ιεηηνπξγία Copy Tiles and Set to Ground ζην κελνχ Map Drawing Tools. Αθφκα, εάλ ν ρξήζηεο ζέιεη λα δεη ην ράξηε πνπ θηηάρλεη απφ κηα πην γεληθή άπνςε, κπνξεί λα ην ζκηθξχλεη θάλνληαο zoom out, θπιψληαο ηε ξνδέια ηνπ mouse. Αληίζηνηρα, γηα λα κεγελζχλεη ην ράξηε, κπνξεί λα θάλεη zoom in θπιψληαο ηε ξνδέια ηνπ mouse κε ηελ αληίζεηε θνξά. 3.2.2. Καζνξηζκόο ηωλ ηδηνηήηωλ ηωλ tiles πσο πξναλαθέξζεθε ε αλάζεζε ρξψκαηνο είλαη αλεμάξηεηε απφ ηελ αλάζεζε ηδηφηεηαο ζε έλα tile. Έηζη, ν ρξήζηεο κπνξεί λα νξίζεη πεξηνρέο απφ tiles κε θάπνηα ηδηφηεηα πξηλ θαλ ηηο ρξσκαηίζεη. Απηφ είλαη ρξήζηκν, φηαλ γηα παξάδεηγκα ν ρξήζηεο ζέιεη λα νξίζεη κία κεγάιε πεξηνρή σο ζάιαζζα θαη ηελ νξίζεη εμ αξρήο κε ηελ ηδηφηεηα ηνπ λεξνχ. Ο ρξήζηεο κπνξεί λα ζέζεη ζηα tiles ηελ ηδηφηεηά ηνπο: έδαθνο, λεξφ, αέξαο απφ ηηο αληίζηνηρεο επηινγέο ηνπ κελνχ Map Drawing Tools (Δηθφλα 11). ια ηα tiles ηνπ ράξηε είλαη πξνεπηιεγκέλα ζηελ ηδηφηεηα αέξαο. Αθνχ ν ρξήζηεο επηιέμεη Select Air tiles, Select Ground Tiles ή Select Water Tiles, πξέπεη κε ην πνληίθη λα θάλεη θιηθ πάλσ ζην tile πνπ ζέιεη λα νξίζεη κε ηελ αληίζηνηρε ηδηφηεηα ή λα θάλεη θιηθ θαη λα ζχξεη ην πνληίθη γηα λα νξίζεη κία πεξηνρή απφ tiles κε ηελ αληίζηνηρε ηδηφηεηα (Δηθφλα 9). Εηθόλα 9: LevelEditor, Μαξθάξηζκα νξζνγώληαο πεξηνρήο γηα νξηζκό ηδηόηεηαο Ground Οη πεξηνρέο πνπ έρνπλ νξηζηεί σο έδαθνο ή σο λεξφ αλαβνζβήλνπλ ειαθξά κε δηαθνξεηηθή απφρξσζε γηα πεξηζζφηεξε ζαθήλεηα (Δηθφλα 10). Αλ αθνχ επηιέμεη γηα 25