Re: Software Architecture/Design

Warrick Buchanan <[email protected]>
Newsgroups gmane.games.devel.sweng
Message-ID <[email protected]>
Such functional composition systems _are_ about as massively data driven and orientated as you can get!  You carefully arrange your data by access patterns, your data is sorted and filtered through the system with decisions being made by the contents of the data itself.  Your designers enter data that controls the very logic of the system given where this and that gets binned etc and you piece it together as a data flow diagram that is itself described by configurable data.
For game logic you effectively have 'decision tables' whose conditions are fed by batches of queries and the functions that process and issue the corresponding actions are driven by the query results and data tables of designer created rules.

From: [email protected]
Date: Fri, 4 Jun 2010 16:25:04 +0100
To: [email protected]
Subject: Re: [Sweng-Gamedev] Software Architecture/Design

Although these techniques don't immediately lend themselves to massively data-driven development, you can still use them to handle all the behind the scenes processing. There's also no concensus on what level of data driven anyone is thinking about when they talk about it.


For my development purposes, being able to add new gameplay features without adding more code is how I might define my game to be data driven. The POs and SOs style does not affect how that can be accomplished (in my opinion). You're merely using the POs to process the SOs data, whether that SO is a lump of dumb data, or a scripted entity, or allowing the PO calls to be generated by a PO process itself (which is pretty much what the existence based FSM technique does).



On 4 June 2010 15:57, Morten Brodersen <[email protected]> wrote:


Ups yes Richard is right. I am talking about Data Oriented Design here

not Data Driven Design :)



Morten



-----Original Message-----

From: [email protected]

[mailto:[email protected]] On Behalf Of

Morten Brodersen

Sent: Saturday, 5 June 2010 12:53 AM

To: [email protected]

Subject: Re: [Sweng-Gamedev] Software Architecture/Design





> Forgive me if I'm wrong, but this doesn't this approach limit the

flexibility of the system ?

> I mean, if behaviors are called explicitely, then adding a behavior

need changes in other place of the code

> (meaning in turn that beyond some limit, the code will be awfully

difficult to maintain).



It is actually quite the opposite. The more you break your application

into simple transform steps (SO->[PO]->SO) the easier it is to reuse and

maintain. Because you can "inject" new PO's without changing the old

SO's and PO's.



For example, if you have the following:



SO_1 -> [PO_1] -> SO_2



You can (for example) change the behaviour by doing:



SO_1 -> [PO_NEW_A] -> SO_1 -> [PO_1] -> SO_2 -> [PO_NEW_B] -> SO_2



Without changing a single line of code in SO_1, SO_2 or PO_1. In other

words you are adding new "lego blocks" that gives you more to build

with.



> It also seems difficult to me to build a data-driven approach on the

top of this appraoch (but again, I might be wrong).

> Or am I missing something obvious ?



Data driven design is about focusing on how the data is structured

instead of focing on algorithms/objects in the OO sense. Organizing the

data structures in a memory friendly way can give you a dramatic

performance improvement because of the CPU avoiding cache misses.



If you think about it, data objects/structures is what SO/PO is all

about:



SO -> [PO] -> SO



The State Objects (the data structures) are explicitly defined and the

PO's are simply transforming the input data to the output data. So it is

actually very easy to do data driven design with SO/PO. What you have to

do is to make sure the SO's take full advantage of the way the CPU

caches are organized.



Morten



-----Original Message-----

From: [email protected]

[mailto:[email protected]] On Behalf Of

[email protected]

Sent: Saturday, 5 June 2010 12:27 AM

To: [email protected]

Subject: Re: [Sweng-Gamedev] Software Architecture/Design







----- "Morten Brodersen" <[email protected]> a écrit :



> A message based architecture is actually very different from the SO/PO



> approach.

>

> The SO/PO focuses on state less PO's transforming one or more SO's to

> one or more SO's.

>

> The PO's are called directly in the code. There are no

> intermediate/mediator forwarding messages from one PO to another.

>

> Messaging can be added to a SO/PO architecture but it is not at all

> required.

>

> Given that a message is a SO and a network is an SO you could for

> example describe messaging this way:

>

> SomeState -> [SomeStateToNetworkMsg] -> NetworkMsg

> Socket+NetworkMsg -> [NetworkMsgSender] -> Socket

> Socket -> [NetworkMsgReceiver] -> Socket+NetworkMsg NetworkMsg ->

> [NetworkMsg2SomeState] -> SomeState

>

> Again breaking the architecture into simple State and Process Objects

> that can be mixed and matched with other SO's. For example with the

> following:

>

> Console+NetworkMsg -> [NetworkMsgPrinter] -> Console

> NetworkLog+NetworkMsg -> [NetworkMsgLogger] -> NetworkLog

> NetworkLog -> [NetworkLogSaver] -> NetworkLogFile

> etc.

>

> Morten



Forgive me if I'm wrong, but this doesn't this approach limit the

flexibility of the system ? I mean, if behaviors are called explicitely,

then adding a behavior need changes in other place of the code (meaning

in turn that beyond some limit, the code will be awfully difficult to

maintain).



It also seems difficult to me to build a data-driven approach on the top

of this appraoch (but again, I might be wrong).



Or am I missing something obvious ?



-- Emmanuel Deloget _______________________________________________

Sweng-Gamedev mailing list [email protected]

http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.

com



_______________________________________________

Sweng-Gamedev mailing list [email protected]

http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.

com



_______________________________________________

Sweng-Gamedev mailing list

[email protected]

http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com



-- 
fabs();
Just because the world is full of people that think just like you, doesn't mean the other ones can't be right.

 		 	   		  
_________________________________________________________________
http://clk.atdmt.com/UKM/go/197222280/direct/01/
Do you have a story that started on Hotmail? Tell us now

_______________________________________________
Sweng-Gamedev mailing list
[email protected]
http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.