Jump to content
  • Advertisement

baystep

Member
  • Content Count

    9
  • Joined

  • Last visited

Everything posted by baystep

  1. I personally feel like, as much as Python is "noob" friendly, it's syntax style isn't used anywhere else really. Because of this, I would recommend C++ or Java to start with. It'll be a bit rougher, but at least you'll be diving into a language that *feels* a lot more high-level. Once you got those down, you can basically read a ton of others with little effort. Python can do it, and there are games that have been built on it, but I feel a lot of the bigger games are still supported by a C/C++ back-end. I like Java because of it's cross-platform, launch right out of the editor feel. But to really get a grasp, C++ is the big boy on the list. Pick up some OpenGL/DirectX books and you'll not only be building a game, but an engine as well. But hey, I use Unity now because I like it's fast prototyping, C# scripting, WYSIWYG editor, and it's free.
  2. baystep

    Entity-Component System Implementation

    Thanks a ton for answering my questions! I'm off to more reading.
  3. So I have some questions. First, some background. I consider my self a Novice programmer. I've been coding in *some* way since I was 9 (25 now). But after leaving Web Development / System Design, I went back to my dream of Game Development and started back with Java. Then trying to follow my ultimate goal, went to the LOVELY C++ language. Now I'm not GREAT at all in C++ since I'm trying to learn as I go, but I can follow the basic programmers theories. Now my issue is I'm trying to write a mostly basic 2D engine for Cross-Platform game dev in C++ using SDL. I have boost waiting, but I'm waiting for the absolute time where I'll need it before exponentially extending my code base. My goal with this is to have something.... headless? I dunno if that's the word, but basically I want this engine to work almost in a Java libgdx way of only needing to extend/inherit the needed base classes to get something hopefully AA game worthy out of it (not AAA). But in researching the ECS idea of Entity-Component-Systems it seems to be the best bet. I don't really want any game specific logic in the engine, the engine should just handle the memory accesses and what not.   So to explain it better. In trying to implement the ECS system I went to using a handle type system. Which is basically a Handle Manager that dishes out uint32's (unsigned int's) for a "handle", and stores the pointers to that object in a vector for hopefully easier memory management if I need to move objects around in RAM (and hopefully that vector helps boost cache speeds and limit cache misses). NOW, the thing I'm confused about, because all the research points towards theory instead of actual code implementation, is that:   Entities should just be ID's and a holder of some sort, and Components should just be data/properties describing it. Finally Systems should actually dish out the logic in doing what-ever-it-is that the components want it to be. Whats the proper way to have the components interact with each other? And to register to the systems? Ex. A render component will need a position component to know where to render to correct? And a potential Fustrum Culling method might need both? Whats the best way to go about it? Is this an efficient to do it in this way at all? In the way that if my "game" is inheriting a base-class that just starts up SDL (window and renderer), saves some needed classes for file streams, entity manager, state engine etc. And the only thing really needed to "override" is the initialization and cleanup methods? Then inheriting a "state" base-class that adds itself to the state machine and overriding the init, cleanup, execute, event handler, etc methods? The states are then in charge of maintaining their own entity/handle systems and passing this to the "global" (in the sense of it's the main game object's property) render systems? I'm confused on how this should all be mapped together. Finally, to wrap all of these together, whats the best OOP/ECS fashion to connect all of this without breaking all the "rules" and creating debug/memory leak nightmares (ie: singletons and such). I'm hoping that if we can get enough ideas and such that this might serve as a helpful incite for other beginners on how to implement these types of systems. I'll post my code too when I get it working (I'm all for open-source). And sorry to ramble if I did.
  4. baystep

    Entity-Component System Implementation

    Thanks for the super detailed replies!   I like the sounds of a sub system idea. So far I have a class for System Management, which stores all the "sub-systems" and should handle creation, clean-up, updating, etc. So just like entities it stores this list in a std::vector object. The manager also handles a messaging sub-system (unless I should put that into it's own system?) that handles sending out messages between systems and entities almost like events. This works right?       Who checks that? Isn't that a job for a Physics sub-system to check it's list of entities for collisions? And why does a component need to know about the collision at all, isn't the components only job to hold the data and essentially "flag" the entity as needing that service?       In terms of "jobs" and queuing, what's the best way to handle this in C++? I'm guessing a vector of structs to hold the job info, but even then, what kind of data should the struct hold? My only guess is it's really just a list of entity handles that need to be drawn then, and the render system then get's all the info it needs from the other sub systems.       Also, you mentioned that the sub-systems should talk to the other systems to get the info they need, ex: A render-system, calls on the spatial-system to get the spatial data it needs for the requested entity. But isn't this almost un-necessary calls? Why couldn't I just *cheat* and let the render-system find the spatial component?   And finally, what's the semantically correct way to check if a property or type exists within a vector array in C++? For instance, my entities contain a list of components. All my components inherit the base component class which really only contains an update (which I'm going to remove since it's not needed) and a handleMessage function for messaging. But since I want components to just be data/flagging I should really remove both of those and let the systems handle that. Anyways, how would a render-system check an entity to see if a spatial-component exists?
  5. Found on craigslist. Someone please translate.... "Wat dis woo woo-ing about she be like ghetto life evvie-body's woo woo-inn ... so dey be like huslar's are off up standinn wit character to trust in dem wit der boo woo-inn , an she be like sayinn trust dem for every game dey at. She be like dey aint gonna pawn you an yours, an you be like : Lady on craigslist sayinn in da ghetto der is no players dat be husla-inn you one minute an den go be a bigot wit da Gangsta's da next. Dis bitch u...
  6. I'm having an issue with my code right now. I guess I just don't understand the proper procedure for loading external files. What I'm trying to do is write an applet that will load midi files from its jar and play them out. I want it as an applet so I can embed it, and JAR packaged for ease of transfer and distribution. But I can't get file loading to work. I'm using Eclipse as my IDE, and JRE 1.5. When I test the applet in Eclipse locally it works just fine. Loads the image and midi file and processes the note info. But when I try it outside, either just as a .class file embeded in an html file using the APPLET tag, or Exporting as a Jar. When I try either one, nothing loads. The loading cursor just goes for awhile and then nothing. I'm guessing this has to do with which form of loading I'm doing. Here's the code that handles the loading. Which right now is my whole init method.... background = getImage(getCodeBase(),"Assets/background.png"); try { MidiEnum.MIDIDump(new File("Assets\\Midi\\Example.mid")); } catch (InvalidMidiDataException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } The MidiEnum class is a static class I created to hold the helper functions so that's not initiated at all. Any ideas? Is there a better process for loading data files? And what would be the best way to handle loading these files from within a jar and using a web URL?
  7. baystep

    Java Applet Help (File Loading)

    Thanks for the ideas. I will check on that. I almost gave up and went to Flash. But flash doesn't have any native support for MIDI so it would be the loooooooooooooooonnnnnnnnnnggggg road.
  8. HSL to RGB conversions. Then for Fractal Algorithms using it.
  9. baystep

    Which route to take

    To be honest I'm not a beginner. I'm not an expert but I call my self "novice". But to start with my question. I have a game idea (its great and will deserve at least an indie award when its done). But I'm wondering which language to start it with. I know AS3, Java, and C+ as well as some BASIC languages. Now I know my choice comes down to what I'm trying to achieve so here's an example outline (since I'm not done with the story line) Say I wanted to make a top-down 2D RPG with RTS elements. I chose top-down 2D since it seems the simplest for getting my idea across and I don't really want to spend the next year doing 3D modelling to get anything 3D looking remotely decent (I suck at modelling). Imagine Fallout 1/2 minus the dialog and story, so just the character development, inventory, and even the post-apocalyptic theme. And mix that in with like, Sid Mier's Civilization, in the ideas of civilization growth and resource take in and all. I REALLY REALLY want to go multi-player with this, as in its pretty much a requirement. And I understand the length of coding that's gonna take alone. So it comes down to this. What language do you think is best for this? I like the aesthetic quality's of Flash and the fact that it can go browser based which would be AWESOME. But I don't really know about its networking capabilities, it seems to be really tight-cheeked about external information of all kinds. Plus I don't think it could really handle all the logic from AI that's required in the RTS elements. I like Java too cause its multi-platform and can go browser based too. Plus I here there a bit better on the networking scheme. But I also heard that it might not be able to handle the logic either since its mostly VM'd coding. Now I know C can handle it, but I can never get any libraries to EVER work together so I'm pretty much abandoning this language as a choice. Any ideas on a starting point? Language, engine suggestions, resources to look into?
  10. baystep

    Which route to take

    I hear that Slick is popular, but I personally can't give an opinion as I never used it. [/quote] Slick is the best choice. It comes with a great way to import maps with Tiled map editor, it even bundles Tiled in the download. Slick is built on LWJGL, so you have access to all openGL calls for 3d as well. [/quote] That actually sounds awesome. I just looked at LWJGL and it looked pretty cool. I heard a lot of good things about JGAME but I didn't like the quality it showed from its examples. I think I'm gonna look into Slick.
  11. baystep

    Which route to take

    Well I tried running a few different 3D engines on C++ with VS2010. Such as Ogre3d, Irrlicht, etc. And I can get them running as themselves but when I try and add any other libraries (physics, audio, etc.) that's when stuff stops working together. So far I really like the idea on Java as well. And by not running the logic I mean like muti-threading support or its performance on the many iterations I'm going to need to do for the AI. Finally any suggestions on frameworks/engines for Java for some nice tile based or maybe isometric drawing?
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!