Sign in to follow this  

Engine: what next?

This topic is 3628 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've managed to wade through a swamp of books, tutorials and references to come out with a basic engine. It: Renders 3D stuff, Has a camera class, Has vertex and index buffer classes, Has mesh classes, Uses DirectInput, Does Terrain creation, Does Frustum culling and It can N-Patch meshes on demand. I want to put together a full game. It doesn't have to be good, but I would like to get a working game together without copy&pasting from a tutorial. So, what would you recommend I implement next? Is there some cool performance-enhancing drug i can inject into my engine or some other element I should consider including? Currently, the movement in the camera is a lot like an FPS, so I might consider making one of them.

Share this post


Link to post
Share on other sites
I don't see collision detection. That should be next. Then go for some simple physics like gravity, friction, etc. You'll need these to get to a point where you can run and jump around on the terrain, bump into other models, etc. Good job so far, though. That's a lot of work.

Share this post


Link to post
Share on other sites
Once you have basic features, start looking at things that a)make it as easy as possible to create and add new 'content', b)make it as easy as possible to experiment, and c)reduce development/experimentation time. Start thinking about content rather than code and how it gets into and flows around your engine.


A few examples off the top of my head:

1) Open formats. Support common content formats (e.g. Quake model geometry formats or .JPG textures) or if you have your own proprietry formats make exporters for popular content creation packages (e.g. 3DS Max, Photoshop). Done right this lets content creators (e.g. artists) create content for you using whatever packages they feel comfortable with.

2) Scripting. Make the current features of the engine scriptable with something like Lua or even C#. If the scripting features are always running, then you can experiment and even build complete games in script without ever having to wait for a re-compile or even re-start your engine/game. Runtime scripting adds a massive amount of power to your engine. Get new features working in script first and move them into compiled C/C++ functions when you're happy with the functionality.

3) Hot loading. Watch the time stamps of all content files your engine knows about. If the time stamp of a watched file changes, re-load the content in that file automatically. It's very simple but can vastly improve iteration time. Imagine you're an artist who's playing through a level of a game you've just created and you notice a texture that could do with some tweaks to make it look better - with hot loading you Alt-Tab out to Photoshop, tweak and save the texture, Alt-Tab back to the game and within a second the texture you've just tweaked has changed in game.

4) Diagnostics. You're the artist mentioned above again, you come across a wall in the game where the texture doesn't tile properly, but you didn't create that level and there are 10 textures called 'wall' used on that level and you're not sure which one is the one at fault without loading the level up in 3DS Max and checking. Time can be saved by simply providing a special diagnostic option in the engine/game that shows a 'pick' cursor - details of what the cursor is pointing at are shown somewhere ("levels/level5.lvl, models/room_102_wall_4.mdl, textures/brick07.dds, polygon#488, vertices#202,206,201", etc).

Share this post


Link to post
Share on other sites
Awesome. Could you point me in the direction of some good good collision detection tutorials? I say it in plural form because one is never enough. Maybe one with good code snippets (instead of having to read through the code for an entire engine.)

Share this post


Link to post
Share on other sites
Quote:
Original post by rothzael
I want to put together a full game. It doesn't have to be good, but I would like to get a working game together without copy&pasting from a tutorial. So, what would you recommend I implement next?

How about... the game itself? You can go on adding all sorts of cool stuff to your engine, but that's ultimately not what engines are about. Engines handle tasks that are common between games. So, start building a game. In the process, you'll start to see what your game actually needs. And once you've built a few games, you'll have much more insight in what functionality is shared between certain games and what functionality is too specific to receive the engine stamp.

You know, you can always tweak your engine while you're building another game with it. And that's where I believe the real improvements come from: the ones that have proven themselves to be usefull.

Share this post


Link to post
Share on other sites
Quote:
Original post by rip-off
Quote:
Original post by rothzael
I want to put together a full game.


Write games, not engines.

If you disagree, further reading.


I do disagree. I want to know how it all works. I think the best understanding I can get is by doing everything. I'm not an idiot; I won't turn around and try to sell my engine to aspiring game developers or try to make a game that could be considered in any way marketable. I just want to learn. I think not designing an engine on the basis that I don't know how to make a good one (yet) is not the way to go.

I don't want to upset anyone, but I've had enough of reading articles by retired game designers and egomaniacs telling me that I will never be good enough to design games. If you read between the lines, that article is in the same vein.

But enough now, I started this thread to get some pure information and technical advice. I don't want to start a forum war :)

Share this post


Link to post
Share on other sites
Quote:
Original post by rothzael
I do disagree. I want to know how it all works. I think the best understanding I can get is by doing everything. I'm not an idiot; I won't turn around and try to sell my engine to aspiring game developers or try to make a game that could be considered in any way marketable. I just want to learn. I think not designing an engine on the basis that I don't know how to make a good one (yet) is not the way to go.


Try reading the actual lines. And the additional material I linked.

The bottom lines isn't "Don't make an engine". It is "Make a game, developing things on a need-to-have basis. If you don't need it *right now*, don't implement it.". That way, your game gets made and the engine is designed to work with a real game. The alternative is writing bits of classes that you think you'll need, but probably making wild assumptions without the experience you need to make them. It isn't that you aren't good enough - it is that there is simply a better way. Read the thread I linked, some people who have similar arguments to yours have them overturned.

Nevertheless, this will be my last reply on the matter. No point wasting perfectly good advice...

Share this post


Link to post
Share on other sites
Quote:
Original post by rothzael
Quote:
Original post by rip-off
Quote:
Original post by rothzael
I want to put together a full game.

Write games, not engines.

If you disagree, further reading.
I do disagree. I want to know how it all works. I think the best understanding I can get is by doing everything. I'm not an idiot; I won't turn around and try to sell my engine to aspiring game developers or try to make a game that could be considered in any way marketable. I just want to learn. I think not designing an engine on the basis that I don't know how to make a good one (yet) is not the way to go.
I'd just like to step in and really encourage taking the advice from the article on board. Don't stop making your engine, but rather than trying to figure out what to make next take what you've already got and start building an actual game with it; you'll very quickly find out what you need to either improve or add, and you'll end up with an engine that meets the requirements of an actual game project, not to mention a finished game!

The article isn't really trying to stop you from writing an engine, it's just suggesting a different way to go about it, and while it's entirely your own decision to take or leave the advice it is a good method that will lead to solid results. Like rip-off, I will however say no more on the matter, it's your own decision to either take the advice on board or not, and I don't think there's any real value in people rambling on about it further.

Quote:
Awesome. Could you point me in the direction of some good good collision detection tutorials? I say it in plural form because one is never enough. Maybe one with good code snippets (instead of having to read through the code for an entire engine.)
Practical Collision Detection (check the references from this one as well).

Metanet Software N Tutorials: Basic Collision Detection and Response and Grid-based Collision Detection and Raycasting. These articles are excellent but aren't neccesarily applicable to your 3d application without some modification, so you may prefer other resources if you're aiming for an FPS.

Collision Detection section of the GDNet article archive.

Share this post


Link to post
Share on other sites
Quote:

Original post by rothzael
I've had enough of reading articles by retired game designers and egomaniacs telling me that I will never be good enough to design games. If you read between the lines, that article is in the same vein.


Before you completely dismiss the article, read my post here.

Share this post


Link to post
Share on other sites

This topic is 3628 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this