Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (7th_zorro, degenerate_762, AndrewAMD, ozgur), 774 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 4 of 6 1 2 3 4 5 6
Re: Unity is a dic* [Re: AlbertoT] #383242
09/17/11 18:12
09/17/11 18:12
Joined: Mar 2006
Posts: 3,538
WA, Australia
J
JibbSmart Offline
Expert
JibbSmart  Offline
Expert
J

Joined: Mar 2006
Posts: 3,538
WA, Australia
Yes, there is a difference. I don't know what you're saying, though. I previously thought you were saying I was wrong in saying that one of the differences between "camera.x += 1*time_step;" and "Camera.main.transform.Translate(move*Time.deltaTime);" is that the latter demonstrates encapsulation, the use of which is not intrinsic to Object Oriented programming.

Now it appears you just want to explain components. That's great, but why quote me?

Jibb


Formerly known as JulzMighty.
I made KarBOOM!
Re: Unity is a dic* [Re: JibbSmart] #383250
09/17/11 18:50
09/17/11 18:50
Joined: May 2002
Posts: 7,441
ventilator Offline
Senior Expert
ventilator  Offline
Senior Expert

Joined: May 2002
Posts: 7,441
camera.x += 1 * time_step;

but this can also be encapsulated in modern languages that support properties.

http://msdn.microsoft.com/en-us/library/x9fsa0sw%28v=vs.80%29.aspx

Re: Unity is a dic* [Re: ventilator] #383253
09/17/11 22:01
09/17/11 22:01
Joined: Oct 2006
Posts: 1,245
A
AlbertoT Offline
Serious User
AlbertoT  Offline
Serious User
A

Joined: Oct 2006
Posts: 1,245
First of all for encapsulation I mean :

"Encapsulation is the process of combining data and functions into a single unit called class "

If so

Camera.main.transform.Translate(move*Time.deltaTime);

It is not, in my opinion, a case of encapsulation

Translate is combined into the class Transform (Upper case)
transform (lower case) is some how similar to the pointer "my" which is used to link the method Translate() to the Game Object Camera

In other engines Camera is a class which encaspulate all the camera related data and methods , such as Translate()



Last edited by AlbertoT; 09/17/11 22:10.
Re: Unity is a dic* [Re: AlbertoT] #383254
09/17/11 22:46
09/17/11 22:46
Joined: Mar 2006
Posts: 3,538
WA, Australia
J
JibbSmart Offline
Expert
JibbSmart  Offline
Expert
J

Joined: Mar 2006
Posts: 3,538
WA, Australia
Quote:
"Encapsulation is the process of combining data and functions into a single unit called class "
This is a very limited view of encapsulation, from what I've been taught.

Encapsulation can be broken in some languages. Consider the use of an Abstract Data Type in C, for example. The programmer/client shouldn't have to worry about how something is done, just that it gets done. You might implement linked lists and provide a "lLists.h" with headers to a whole bunch of functions you've written to manipulate your linked lists. The client should never open "lLists.c", nor be aware of how they are implemented, instead interacting with them only through the functions whose prototypes are provided in "lLists.h". This way, the implementation can be changed (to be more memory efficient, speed efficient, remove bugs, etc) without affecting the client in the slightest. When you manipulate its values directly, you "break encapsulation", and implementations of the same ADT are no longer necessarily interchangeable.

Object oriented programming languages like C++ and Java often provide means to enforce encapsulation (private), but encapsulation isn't restricted to OO languages.

Jibb


Formerly known as JulzMighty.
I made KarBOOM!
Re: Unity is a dic* [Re: JibbSmart] #383279
09/18/11 14:52
09/18/11 14:52
Joined: Oct 2006
Posts: 1,245
A
AlbertoT Offline
Serious User
AlbertoT  Offline
Serious User
A

Joined: Oct 2006
Posts: 1,245
Well I am not professional programmer so I dont argue with your extended definition of encapsulation

However let's assume that estabilishing a link to an external set of functions is also Encapsulation
What I did not agree was your claim " its own methods "
Nope in component based engines there are generic methods only

Only non component based engines supply methods which are custom made for the category (class) of entities they refer to.

Last edited by AlbertoT; 09/18/11 15:11.
Re: Unity is a dic* [Re: AlbertoT] #383322
09/18/11 23:56
09/18/11 23:56
Joined: Mar 2006
Posts: 3,538
WA, Australia
J
JibbSmart Offline
Expert
JibbSmart  Offline
Expert
J

Joined: Mar 2006
Posts: 3,538
WA, Australia
Indeed, "its own methods" was too specific a definition for me to use, as imperative languages don't have objects with methods but it is still a common convention to recognise a relationship between some functions and a data type for the sake of encapsulation.

But I think I still don't understand Unity, or perhaps I don't understand you properly. Perhaps I just don't understand components.

Here is the manual excerpt I quoted before for convenience:
Quote:
Every object in a scene has a Transform. It's used to store and manipulate the position, rotation and scale of the object.
The camera (or, in the code example, "Camera.main") has a Transform called "transform", and we call transform's method Translate. Is this not the case?

It appears to me that any and all objects in Unity have an object in them called a Transform that, in the rendering pipeline, will be called upon (likely through more of the Transform's methods if they maintain encapsulation) in order to construct the matrices of each object. The same would happen during physics calculations.

I'm not sure I understand component based programming, but it appears to me that it is a paradigm dependent on object oriented languages by which objects are constructed from many other pre-fabricated objects, but those objects still have their own properties and methods.

Jibb


Formerly known as JulzMighty.
I made KarBOOM!
Re: Unity is a dic* [Re: JibbSmart] #383340
09/19/11 08:34
09/19/11 08:34
Joined: Nov 2004
Posts: 7,121
Potsdam, Brandenburg, Germany
Machinery_Frank Offline
Senior Expert
Machinery_Frank  Offline
Senior Expert

Joined: Nov 2004
Posts: 7,121
Potsdam, Brandenburg, Germany
Components in traditional programming are not just objects, they are more, like a motor/engine is a component of a car, like a potato is a component of your soup, like a printer is a component of your office hardware. A component is often built from many objects, functions, data and whatever belongs to do a certain job. It can be replaced (new printer in your office, new engine in your car). It has a predefined interface. It is similar to an object but often bigger and often comes with wrappers. So many software companies sell the same component working in many program languages.

But in game development components are also often used to get a higher grade of flexibility. They split components into smaller units. They dont add everything into classes but often use components to add certain functionality on the fly to each object/class where it makes sense. This is not as easy and not as comfortable as when you work with classes who use their own built-in methods. But it can be more flexible and classes are more leightweight, have smaller memory size and thus work better in systems like mobile phones or other low end hardware.

So often, even when we personally dont like a certain style of programming, it still can make a lot of sense why this style exists.


Models, Textures and Games from Dexsoft
Re: Unity is a dic* [Re: Machinery_Frank] #383353
09/19/11 14:36
09/19/11 14:36
Joined: Mar 2006
Posts: 3,538
WA, Australia
J
JibbSmart Offline
Expert
JibbSmart  Offline
Expert
J

Joined: Mar 2006
Posts: 3,538
WA, Australia
Yeah, potato similes are great and all, but my problem here is this: is component-based programming simply a different style of programming in current languages, or is it an alternative syntactic sugar to classes that relies on it being written in particular "component based" languages?

Because "often bigger" isn't helpful, since there's no standard for the size of objects. "Can be replaced" isn't helpful, because as with ADTs in imperative programming languages, abstract classes are common in OO as well (you might replace an array list with a linked list, but it will make no difference to the rest of your program if you are only interacting with it through an abstract "list" class or interface). "It has a predefined interface" doesn't differentiate it from an object (except that this is perhaps enforced in component based programming [as you implied], but an OO language may also have that requirement and still be useful in a strictly OO paradigm).

Basically, what AlbertoT and I appear to have come down to in our discussion is his position that the phrase "its own methods" does not apply to component based programming, and I fail to see how that can be the case, particularly given the short code example Liam gave in the original post and Unity's documentation regarding Transforms.

It appears to me that component based programming is simply a style you might use when writing in C++, Python, Go, or any number of other OO languages, but you'll still have instances of classes and call their methods.

Jibb


Formerly known as JulzMighty.
I made KarBOOM!
Re: Unity is a dic* [Re: JibbSmart] #383357
09/19/11 15:18
09/19/11 15:18
Joined: Aug 2008
Posts: 133
Sweden, Stockholm
E
Enduriel Offline
Member
Enduriel  Offline
Member
E

Joined: Aug 2008
Posts: 133
Sweden, Stockholm
Article about game entities composed by components: http://www.gamasutra.com/blogs/MeganFox/20101208/6590/Game_Engines_101_The_EntityComponent_Model.php

There is nothing special to components in game development, it's just a software design pattern where the goal is to simplify certain tasks just like all other software designs patterns out there.

Components allow your entities to be composed of several parts, where each of them get updated independently, probably by a manager. The goal is to get more modular code where you can plug in and out different sort of functionality and behaviour for your entities.

Could be a HealthComponent, adds health functionality to an object so it can get damaged. Now anything that shoots at that entity will damage it. Could be JumpComponent, any entity who has this component can jump now.

Think of it as an extension.

Just some examples laugh

Yes Jibb this has nothing to do with languages at all, it's just a software design pattern.

Last edited by Enduriel; 09/19/11 15:26.
Re: Unity is a dic* [Re: Enduriel] #383359
09/19/11 15:46
09/19/11 15:46
Joined: Mar 2006
Posts: 3,538
WA, Australia
J
JibbSmart Offline
Expert
JibbSmart  Offline
Expert
J

Joined: Mar 2006
Posts: 3,538
WA, Australia
Great article, and great response. Thank you, Enduriel laugh

So the answer seems to be that it's a design decision in development (EDIT: confirmed in an Edit I missed on the first read -- thanks!) -- a programming paradigm that is relatively language agnostic (I say "relatively" because it doesn't appear to be a reasonable approach in an imperative language [although technically possible since classes are just syntactic sugar]).

I've never done a course on the OO paradigm, and so I always called any instance of a class an "object" regardless of the paradigm used. It appears objects and components are both instances of classes under different paradigms (or different intentions under the same paradigm).

Correct me if I'm wrong in any of that, but I feel a lot has been clarified for me.

Much appreciated laugh

Jibb

Last edited by JibbSmart; 09/19/11 15:48.

Formerly known as JulzMighty.
I made KarBOOM!
Page 4 of 6 1 2 3 4 5 6

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1