16

DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

  • View
    222

  • Download
    2

Embed Size (px)

Citation preview

Page 1: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky
Page 2: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

DRODDROD

Koifman EranKoifman EranEgri OziEgri Ozi

Supervisor: Alexander ArlievskySupervisor: Alexander Arlievsky

Page 3: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

The ProblemThe Problem

Open source projects developed by Open source projects developed by independent developers tend to be independent developers tend to be “Spaghetti” projects.“Spaghetti” projects.

Traditional games define a closed set of Traditional games define a closed set of features and object. In order to add a features and object. In order to add a feature or a new object the “traditional” feature or a new object the “traditional” game’s source code must be altered.game’s source code must be altered.

Page 4: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Project GoalsProject Goals

Creating a new .NET platform for the Creating a new .NET platform for the game.game.

Creating a generic platform which will Creating a generic platform which will enable the users to assimilate new code enable the users to assimilate new code into the platform without changing the into the platform without changing the source code.source code.

Develop a platform which will not be game Develop a platform which will not be game specific. specific.

Page 5: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Solution OverviewSolution Overview

Creating a base infrastructure which will provide Creating a base infrastructure which will provide common features and services for external common features and services for external objects.objects.

Creating objects which will be assimilated into Creating objects which will be assimilated into the infrastructure at run-time. The assimilation the infrastructure at run-time. The assimilation does not require changing the infrastructure does not require changing the infrastructure source code.source code.

Creating a simple interface which will enable the Creating a simple interface which will enable the user to add new features and objects to the user to add new features and objects to the infrastructure.infrastructure.

Page 6: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Solution OverviewSolution Overview

Implementing DROD object and features Implementing DROD object and features in order to demonstrate the infrastructures in order to demonstrate the infrastructures capabilities.capabilities.

Creating the DROD 2D world in which the Creating the DROD 2D world in which the DROD game will be played.DROD game will be played.

Page 7: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Problems And SolutionsProblems And Solutions

Creating a new Creating a new unknown type of unknown type of object and object and assimilating it into the assimilating it into the infrastructure.infrastructure.

Factory object.Factory object.

Using the .NET Using the .NET reflection.reflection.

Inheritance from a Inheritance from a basic object known to basic object known to the infrastructure the infrastructure (BaseObject).(BaseObject).

Page 8: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

IntercommunicationIntercommunication

Communicating Communicating between the between the infrastructure and the infrastructure and the unknown objects.unknown objects.

Communicating Communicating between the unknown between the unknown objects.objects.

Message based Message based communication.communication.

Each objects will Each objects will contain a mailbox.contain a mailbox.

Creating an engine Creating an engine which will supervise which will supervise the flow of messages.the flow of messages.

Page 9: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Creating The 2D WorldCreating The 2D World

Generically creating Generically creating and assimilating and assimilating different 2D worlds different 2D worlds into the infrastructure into the infrastructure without changing the without changing the infrastructure’s source infrastructure’s source code.code.

Screen Creator Screen Creator object.object.

Screen Sequence Screen Sequence object.object.

Map Manager object.Map Manager object.

Screen Manager Screen Manager object.object.

Page 10: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Object BehaviorObject Behavior

Creating new feature Creating new feature and behaviors and and behaviors and ascribe a certain ascribe a certain behavior to an object.behavior to an object.

Dynamically changing Dynamically changing objects’ behaviors at objects’ behaviors at run-time.run-time.

Handlers associated Handlers associated to messages.to messages.

Handler Manager Handler Manager object.object.

Associating Associating preliminary behavior preliminary behavior to objects using a to objects using a simple text interface.simple text interface.

Page 11: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Finding Unknown ObjectsFinding Unknown Objects

Searching an Searching an unknown object in the unknown object in the infrastructure at run-infrastructure at run-time.time.

Searching according Searching according to features.to features.

Searching according Searching according to object type.to object type.

Yellow Pages object.Yellow Pages object.

Unique ID given at Unique ID given at creation.creation.

Categorization Categorization according to according to implemented implemented interfaces.interfaces.

Page 12: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Saving And Restoring StatesSaving And Restoring States

Saving the current Saving the current state of the state of the infrastructure and the infrastructure and the unknown objects unknown objects within.within.

Restoring the state Restoring the state and the objects at a and the objects at a latter time.latter time.

Serialization Serialization mechanism.mechanism.

Multiple file usage.Multiple file usage.

Clearing the current Clearing the current state and restoring state and restoring the saved state.the saved state.

Page 13: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Multi ThreadingMulti Threading

Creating a multi-Creating a multi-threaded threaded infrastructure.infrastructure.

Protecting critical Protecting critical sections.sections.

Threads for players, Threads for players, decoration, monsters, decoration, monsters, and engine.and engine.

Mutex protection on Mutex protection on the infrastructure the infrastructure critical data such as critical data such as Map Manager object.Map Manager object.

Page 14: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Timing And PrioritiesTiming And Priorities

Creating object Creating object priorities.priorities.

Creating Message Creating Message priorities.priorities.

Manager and Manager and supervise the timing supervise the timing in the infrastructure.in the infrastructure.

Message priorities in Message priorities in the mailbox.the mailbox.

Object priorities Object priorities according to according to implemented implemented interfaces such as interfaces such as “IPlayer”, “IDecor”.“IPlayer”, “IDecor”.

Timing using the Timing using the Engine object.Engine object.

Page 15: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Future DevelopmentFuture Development

3D Engine.3D Engine.

Network support.Network support.

Input devices support such as joystick.Input devices support such as joystick.

Editor environment which will create new Editor environment which will create new worlds.worlds.

Page 16: DROD Koifman Eran Egri Ozi Supervisor: Alexander Arlievsky

Older Development Environments Older Development Environments Versus .NETVersus .NET

Reflection mechanism in .NET.Reflection mechanism in .NET.

Portability in .NET.Portability in .NET.

Extensive GUI support in .NET versus Extensive GUI support in .NET versus MFC.MFC.

Extensive object collections in .NET Extensive object collections in .NET versus STL.versus STL.

Problems with the serialization Problems with the serialization mechanism.mechanism.