Jump to content

  • Log In with Google      Sign In   
  • Create Account


landagen

Member Since 24 Jan 2007
Offline Last Active May 27 2013 02:48 PM

Topics I've Started

Classifieds Projects lacking

12 April 2013 - 10:35 AM

Before it was changed, one of my favorite forums to visit was the help wanted.  I loved to see new ideas being posted and more importantly the feedback people gave.  I also liked to see what kind of success they were having in recruiting or what kinds of questions people have.  With the new system, I see none of that.  People post into what appears to be empty space.  It is like announcing your idea to an empty room.  No reaction and no feedback.  When I heard GDNet was developing a new system I was excited.  I started picturing there would be a place to put your project.  You would have a blog about your project and people could watch and stay up to date with their favorite projects even if they could not contribute.  I was imagining that having a project would have community involvement.  You could see how many people were following your project and maybe that would provide some needed motivation.  You as the project owner could post images showcasing what work you have accomplished and blog about problems you have run into.  The community could see who was actively involved in certain projects.  Maybe there could even be a sort of resume about past projects you have been involved with giving you a sort of reputation when it comes to your work ethic on these projects.  I would love to see these kinds of things because it is really encouraging and really gives a sense of community involvement.  Is there any plans for something like this?


GDNet Official source code repository

12 April 2013 - 08:08 AM

What about having an official source code repository.  Something that includes a multitude of example projects showing how to do certain things such as creating a directx or opengl window or an example input class or a starter entity-component framework.  Code should be well written, straightforward and well documented.  It should also have detailed information on getting setup on someone's machine.  The goal would be to give gamedev people a great starting point and to give excellent examples on new concepts.  All of these articles that are being written could have a place in the code repository so that someone could access the code.  You could even have a community engine that people could contribute to.  Hopefully with even community assets that could be freely used for things such as temporary placeholders or to show the functionality of say an animation system that has been added to the official source code repository.  The source code repository could be broken up by language or even have separate repositories for different languages. 


Entity-Component Design Questions

08 April 2013 - 08:20 AM

I have recently read the Entity-Component article on here and I got really interested in the design.  It sounds great.  Functionality through property definitions.  I have been waiting for the followup article about implementation, but it has not come yet.  I have been reading and thinking about my own implementation and have a few questions.  First, I want to start off with my assumptions/design.

 

1.  All components inherit from a base component class that contains some pure virtual functions to be overwritten.

2.  Components contain only data and do not directly have functionality.

3.  All entities will be kept in a single container as the master list of entities.

4.  Entities are a class that can contain one or more components.

5.  A system can query the master list looking for entities that contain all required components.  Once it finds one, it will then typically reference that entity by an ID number, not a pointer

 

 

Some of my design/assumptions may already be drifting away from the concept.  I am trying to stay close to the concept because I feel that if I drift away from the component, then I may end up running into the snags the design was supposed to prevent.  So without further ado, here are my questions:

 

1.  How to provide custom functionality for entities that contain the exact same components.  For instance, I may want to have different AI routines for different entities.  My thought was to have a component that is a functor to the particular AI routine I would want to run.  That would be a required component in order for the AI system to find that entity


2.  How do most people deal with changes to the component list?  Do they use the observer pattern to inform systems when an entity changes or does the system query the master list every time to find the entities that match its criteria.  The observer pattern is the way I was thinking.


3.  How do you handle shared components.  An example would be several entities using the same material.  My thought was to just have a component that contains a shared_ptr to the material. 

 

4.  Is it okay to have some inheritance at the component level or would this break the design?  Based on what I know, I can't imagine it would break the design.  I wanted for instance my graphics system to be able to find all entities that contain a VertexBuffer component, but I also want my material system to be looking for a particular type of VertexBuffer component (say one that provides texels).   

 

5.  My understanding is that most systems contain a reference to an entity by entity ID and not by pointer.  Why is that?  Is it common for the pointer to change, but the ID to remain the same?  If so, what scenarios would that occur in?  Does constant lookup not cause performance issues? 


Also, any articles that go into some specifics about an Entity-Component system would be very helpful.  Thanks. 


Trouble compiling CEGUI 64 bit

15 March 2013 - 11:07 AM

I am trying to compile CEGUI in 64 bit VS 2012 and I am running into linking errors, but I cannot figure out why.  The linking errors are as follows:

 

 

PCRERegexMatcher.obj : error LNK2019: unresolved external symbol __imp_pcre_compile referenced in function "public: virtual void __cdecl CEGUI::PCRERegexMatcher::setRegexString(class CEGUI::String const &)" (?setRegexString@PCRERegexMatcher@CEGUI@@UEAAXAEBVString@2@@Z)
2>PCRERegexMatcher.obj : error LNK2019: unresolved external symbol __imp_pcre_exec referenced in function "public: virtual enum CEGUI::RegexMatcher::MatchState __cdecl CEGUI::PCRERegexMatcher::getMatchStateOfString(class CEGUI::String const &)const " (?getMatchStateOfString@PCRERegexMatcher@CEGUI@@UEBA?AW4MatchState@RegexMatcher@2@AEBVString@2@@Z)
2>PCRERegexMatcher.obj : error LNK2001: unresolved external symbol __imp_pcre_free
 
I am attempting to statically link against the pcre_d.lib file which contains the suspected missing definitions. The thing that is throwing me off is that based on the __imp_ prefix it indicates to me CEGUI is looking for a dynamic link instead of using the static link, but I don't know how to tell it otherwise or maybe I am misunderstanding everything.  Any help would be greatly appreciated.  Thanks.  

Object Management Question

21 December 2012 - 12:45 PM

I have a design question.  Just for reference, I believe this an implementation of the composite pattern.  If not, let me know what pattern this fits into.  I have a class called Sprite, ICollidable, IController.  I also have Managers, a physics manager and a Render manager.  A Collidable object references a sprite, a controller also references a sprite.  If I want to turn on collision for a sprite, I just create a Collidable object referencing my sprite and then add it to the physics manager.  Same if I want to make it move.  I create a controller object and reference the sprite and then add it to the Physics manager (in the controller list.  I may move this to a different manager).  I would like to be able to have any one class to delete the underlying sprite and all classes referencing the sprite to be informed.  I need it to propagate upwards to inform all of the objects that reference it so it knows to not reference it anymore.  So for instance, if the Sprite object is deleted, then the ICollidable object needs to be informed who in turn needs to inform the physics manager.  The physics manager is not aware of the underlying Sprite object so it cannot be directly informed.  

 

  I am just starting down this path and worry about future performance.  I know that I should not worry about performance, but this construct is going to be used a lot and I don't want to find out when it is too late.  Has anyone used something similar or is there a different way to solve the problem above that may lead to better results? 

 

Some things I have thought of are:
 

1.  Straight inheritance -> better performance, but does not as flexible

2.  Checking the state of the object before use -> seems like it would have really bad performance since I will use way more often than I will delete it

3.  Treating each object in the hierarchy as a bi-directional linked tree node so that I can traverse up and down to delete all of the objects. -> seems to lose a lot of flexibility and will probably require that each class who wants to participate to inherit from a base class. 

 

I hope my intention is clear.  

 

 

 


PARTNERS