Posted 22 June 2011 - 07:33 PM
Wow, quite a few points to go into... let's see.
[quote name='Reedbeta']You might look at [url=http://www.scummvm.org/]ScummVM[/url] [...]. Looking over the source for that might give you some ideas about architecture and so forth.[/QUOTE] Yes, I thought of that and even have the ScummVM code already. The problem here is of course, that there's a huge amount of code I'd have to sieve through (I count 45 directories in the "engines" folder and many of those contain over 60 separate files) and I don't even know what file to start with. For specific things it's a totally different picture of course, but for getting a general overview of what has to be done, reading other projects is possibly a bit too much. Well, I'll see.
[quote name='Reedbeta']You said you have programming experience, but didn't mention whether you have any 2D graphics experience; if not, that would be a good place to start.[/QUOTE] A good point, yes. I do have very little experience with 2D graphics so far.
[quote name='Reedbeta']You could use [url=http://www.libsdl.org/]SDL[/url] to jump-start your graphics development. [...] SDL can also help out with getting keyboard and mouse input, and playing audio.[/QUOTE] I don't know yet, whether SDL is a good choice with my requirements, but I'll try to find out. One thing we'll be using for sure is OpenGL, but I could maybe combine them... We'll see.
[quote name='TheNut']In addition to what Reed said, Ogre is a graphical engine that has a reputable architecture (note that I never used it), so you may want to take a look at how they designed their engine. It's 3D based, but 2D = 3D - 1D, so it's not all that much different.[/QUOTE] Well, here of course we have a similar problem as with ScummVM - loads of code and probably little of it that would actually help me. I imagine it's a pretty big leap going from 2D to 3D and I'd have to identify and then ignore everything that's extra. Mind you, I may be being a bit naive here, but I imagine that the sort of graphical environment I'm envisioning should be pretty simple - use a few PNGs, have some way of telling my system where my character can walk and what areas show objects or NPCs and redrawing that a few times per second. There will be little movement over all - the main character will move of course, NPCs will mostly stay put and there should be a few items that move in a very limited area.
[quote name='TheNut']I would recommend you look into Windows Presentation Format (WPF) to learn how to write a proper user interface API.[/QUOTE] I want to write a platform independent engine. WPF is .NET, which is only pseudo platform independent, so I won't be using that.
[quote name='TheNut']Box2D is a popular 2D physics engine. You can learn a lot from that.[/QUOTE] Hm, just checked that out because I had never heard of it. Not bad, but I don't think I'll have that much use for "simulat[ing] interaction and collision between moving 2D objects."
[quote name='TheNut']I often use my game engine for regular applications, so don't be narrow minded when developing your own. A game engine is not a game, so don't ever write logic specific for a game inside a game engine. Leave that for your game project.[/QUOTE] Well, the way it's planned right now, we will have 3 layers to the final game - the first one that indeed I could use for completely different projects (receive input and pass it on to the next layer, offer connections to the sound system, etc.), the second one that would prepare the basic logic (how to draw backgrounds, objects, NPCs, the player character, the existence of the inventory and interactions, capability to save & load games, ...) and a third one that will describe this specific game (the areas, objects and NPCs that are used, the choice of interactions we want to offer, the puzzles, etc.). Does that sound like a good separation?
[quote name='TheNut']It's a good idea to architect and design your engine before you write any code for it.[/QUOTE] Yes, that's the phase we're in right now. Admittedly, I have written a little bit of code, but that's more for the learning process and will probably never make it into the project.
[quote name='TheNut']In addition to a game engine, these days most developers build an editor around it. This enables them to easily build levels, add scripted events, manage game resources, etc. If you're building a game world, an editor is pretty much mandatory. I personally use Blender as my game editor and export the data into a format compatible with my engine. Options for you to consider.[/QUOTE] I've been thinking about an editor... Keep in mind of course, that I'm not going to have levels or anything like that, I'll have a certain amount of areas, puzzles and dialogues. Blender is for 3D stuff from what I understand, so I'll probably not use that. What we use in the end will probably depend on what language we choose for the 3. layer. That will probably be some script language (I'm thinking LUA or Python right now, but that's not definite yet) and we'll just see what we do with that. Maybe we'll just use VIM...
[quote name='TheNut']So with those goals in mind, there is of course a lot to learn.[/QUOTE] Absolutely! :lol:
[quote name='TheNut']SDL will help eliminate some of the menial tasks if you don't mind using it. Starting from the ground up will require extensive amounts of research. Start by looking at existing engines, see how they do it, take what designs you like most and incorporate it into your own.[/QUOTE] Sounds like good advice! :happy:
[quote name='fireside']There's a big difference between a 2d and 2.5 engine for adventure games. 2d is really not that big of a deal, you just move sprites around, but you do need to scale.[/QUOTE] Yes, that's the sort of thing I was imagining.
[quote name='fireside']2.5 d is quite a big deal as you need to import the modeled characters and worry about how they blend with the background. You'll need to keep track of the exact camera position in the modeling program so it can be duplicated in the rendering process and the angles, etc, look right.[/QUOTE] Hm, I hadn't thought of that yet... I guess it will be pure 2D then.
[quote name='fireside']That and set up an inventory system.[/QUOTE] The inventory should be relatively easy, I would think. The logic behind it is basically a list (array, vector... whatever fits the bill) of objects (combinations of a picture, a description, possible combinations with other items and maybey a state), right?
[quote name='fireside']If you do decide to do 2.5 d, I would go over to Wintermute and ask the author for some tips. He's quite a nice guy.[/QUOTE] I came across that engine while doing some research into my project, yes. The lite version is for 2D games only, so that might be worth looking at. But that's not open source, is it? I may get some tips there nevertheless of course.
OK, that's all those replies taken care of. :lol: I'd be happy to take more advice though, so if anyone has further suggestions, spit them out! ^^
Thanks a lot,
EDIT: I just saw that it IS possible to download the Wintermute Lite source code, so I take that comment back.