gtdelarosa2

Members
  • Content count

    59
  • Joined

  • Last visited

Community Reputation

121 Neutral

About gtdelarosa2

  • Rank
    Member
  1. C++ Functor template problem

    When you call a pointer-to-method, don't you have to use the following syntax: state->*func(arg) ? Otherwise, you should get a compiler error, I believe.
  2. Airplane Racing Games

    Back in the early 90's I use to play a game called Chuck Yeager's Air Combat ( or something like that - all I know is the title had his name in it ) on a 50mhz 386 PC. It was mostly air combat but also had a racing mode where you flew around pylons to see how fast you could complete a course. It was great fun, played it for many many hours. But you have to like flying since it was extremely realistic, even for back then, so you had to have skill just to keep the plane above the ground but still low enough to get the best track times. I think alot of flight sims today also have racing modes, but I haven't played any new ones recently.
  3. Irrlicht or Ogre3D

    I use Ogre3d in my own projects and at work we use a modified version of Irrlicht for iphone games. IMHO, Ogre is far superior since it is much better designed and has rich 3rd party support. It is very easy to switch between D3D and OGL and it supports both with all the same features. The best thing about Ogre is that its scene graph is designed to be completely separate from the actual renderable entities, so it is easy to have multiple scene graphs in one game. So you can one for outdoor scenes and one for indoor scenes at the same time.
  4. template problem

    How are you instantiating the class? Could you post an example?
  5. question on Class's

    Probably the most essential property of object-oriented programming is to create a bidirectional relationship between data and the functions that operate on that data. In an action-oriented paradigm, there is only a unidirectional relationship, so the functions know what data they act on, but there is no way to know by just looking at the data, which functions act on it. So anytime you need to maintain a bidirectional relationship between data and the functions that will operate on it, you can use the object semantics of a language like C++ to implement it. In other words, you would create a class where the data are the member variables and the functions are the member methods. This kind of encapsulation creates a concrete relationship between the data and the functions so that you can always tell that the two depend on each other. You can also control exactly how the two relate to each other and to external code through the use of accessiblity specifiers like private, public, etc. Hopefully that helps a little, :)
  6. Gizmo's Adventure Code Review

    Hello, Nice game... A comment about the source code: I see you use alot of pass-by-const-value in your functions like, void LoadTiles(const int x, const int y); There's no need to make them const since they are going to be copied. If you were passing complex objects, like class instances, then you should make them references to const if they are not going to be changed within the function. So for example: void LoadTiles( const TileInfo &tileInfo ); But it's good you are trying to make the code const-correct. That is good C++ style.
  7. Ideas for A.I. and a research paper.

    How about searching the web for information about computers that can play chess. I think that's the area where AI has actually reached a level where it can compete with humans. Other than that, AI is still far from being able to match human intelligence. Neural nets are probably the closest thing to human intelligence as far as the basic mechanism of how they work compared to the human brain, you might want to research those as well.
  8. I like AI

    Neural nets, Fuzzy Logic, Hierarchical Task Networks, Behavior Trees, Rule-Based Systems, Goal-Oriented Action Planning... The sky's the limit. AI is an ever evolving field with alot of potential for new applications and discoveries. I guess the kinds of games you want to make should help to narrow down your choices for what to focus on. Good luck!
  9. Event handling

    Quote: Objects can register themselves as interested in certain types of event and events of that type will be dispatched to them when necessary by the event manager. What you just described is the Observor design pattern. Very useful and commonly used for all kinds of things in the core engine. Quote: ideally the event manager would allocate the memory for the event object but it will not know which of the derived event class types the event was (unless I add a long if/else check based on the event type and this doesn't seem a very easily extensible/flexible way of doing things You can use a map to link event type id's to their respective function handler addresses. Look up the GameDev article recently posted on how to implement the system. Google this: GameDev.net -- Effective Event Handling in C++
  10. AI for Aerial Combat Game

    You might want to stay away from a complex physics model where you model the flight controls because this may turn out to be too much work. It depends on the kind of game you are making. If you are making a simulation then by all means use a actual physics-based flight model. But if it is an arcade-style game such as Blazing Angels, it maybe easier and result in a more fun game if you just use steering behaviors to determine the motion of the airplane directly, not through some kind of flight model. Steering behaviors produce realistic-looking motion without alot of code and make it easy to implement group behaviors such as formation-flying and flocking. However, they only determine the direction and velocity of an entity, not it's orientation. So you will have to develop a model for how the airplane is oriented based on it's velocity. For instance, if the airplane has any kind of horizontal velocity, i.e. it is turning, then you can make the airplane bank accordingly. For pitch and yaw, you can just use the direction. And it is a good idea too to keep the shooting decisions and AI on a separate layer from the locomotion system. So you can write the logic for that code without including lots of details about what the physical motion of the plane is. For instance, you will not check velocity and position to decide if the plane should switch from a Navigate action to an Idle action, you will just query the locomotion system or use an Observor in the locomotion system to determine how the AI knows when the plane as arrived on a waypoint. If you implement this in a modular fashion so that the two systems are separate and independent, then it will be easy to switch to a new form of locomotion implementation without having to change the AI code. It also makes it easier to test each system separately. I did this on a football game and it really helped to managae the complexity of the AI and get the project done faster.
  11. Game engine design questions

    Alot of people here will suggest you start by making a game before making a game engine. I tend to agree but not always. If you make a game you have a much better idea of what would be needed in an engine. I guess the basic idea behind game engines is to have common functionality and code that can be used by more than one game all in one place. So if you make several games, then look at what they all need from a programmer's perspective, you will have a good idea of how to design an engine that can be used to make those kind of games.
  12. I'd like to second everthing Captain P said. Seems like you have some kind of implementation issue, not a code design problem. If the behavior is too complex for a single state machine, you may want to look into hierarchical FSM's as Captain P said. Also, search for Practical Statecharts in C++ on Google, that might help. Aigamedev.com also has alot of good stuff on AI that might help but you have to have a membership.
  13. OP, object-oriented programming was invented to solve exactly the kind of problem you are facing, i.e. the problem of rigidity. This is the property of code where it is extremely difficult to reuse or extend it without doing a complete rewrite. Writers of library code try to steer clear of huge enumerations when designing with modularity and extensiblity in mind. Since you are dealing with code that was not designed with these goals, it is unlikely you will be able to just cut it up nicely and easily in to reusable chunks, but will rather have to do major refactoring to get it right. But it should very interesting software design challenge.
  14. You might want to use classes or a structs to represent messages in a type hierarchy. Then you do not need to keep the definitions in one file. Users of the library can add new message types in any file they choose as long as they link in the header of the base message type.
  15. 3dsmax - Ogre

    I only do hobby work with Ogre, but my standard method for converting 3D models to the Ogre format is to first export from 3dsmax to .3ds files. Then import them into Milkshape3D in order to edit them and then export to the Ogre mesh format. You need to download the Milkshape exporter plugin for Ogre and build it, then install to the Milkshape folder.