Archived

This topic is now archived and is closed to further replies.

Promit

Designing a new sort of level and its editor

Recommended Posts

Promit    13246
I have a bit of a quandry (cool word). I am using Q3 BSPs at the moment, and I have some objections to it, especially in terms of more modern rendering methods. I want to write my own sort of trees, file format, etc. but I''m not too sure where to start. That is, I can do one of two things: Take GtkRadiant/WorldCraft and start writing new compilers for my own stuff --OR-- Go into my engine and start writing the rendering code for it. Now the problem is which one to do first. If I write the world creator stuff first, I can''t really test the generated levels. If I write the renderer first, I can''t test the renderer. What would probably be more useful to look into first? [Aside] Some resources on writing GtkRadiant modifications and such?

Share this post


Link to post
Share on other sites
JuNC    236
For my 2p, you can''t seperate the two, you''re going to have to do the design/implementation in parallel.

Saying that though, I''d tend to work on the rendering/logic technology first, working first with hacked tools which generate fixed data sets. Once you have a working rendering/physics/etc system you can work on getting the tools ready for your content developers.

Share this post


Link to post
Share on other sites
superpig    1825
You''re inevitably going to need both; but what I''d probably go for is the renderer, because you can then reuse the renderer in the editor (right?). You could even write the editor into the game itself (under conditional compilation, of course).

Write your engine''s internal structures, with then serialization functions, then a little test code to generate a test level (a box or something) from within the game and save it out. Voila, you have test data.

That''s how I''d do it, anyway.

Superpig
- saving pigs from untimely fates, and when he''s not doing that, runs The Binary Refinery.
Enginuity1 | Enginuity2 | Enginuity3 | Enginuity4
ry. .ibu cy. .abu ry. dy. "sy. .ubu py. .ebu ry. py. .ibu gy." fy. .ibu ny. .ebu

Share this post


Link to post
Share on other sites
Aldacron    4544
There''s also nothing wrong with using a simple 2D array to store some level data just to get the ball rolling with your renderer. Use predefined dimensions for your polys. In the array, 0 = empty space and 1 = a wall. You can get fancy and use more numbers for walls at different angles. It''s quick and easy to set up and works fine as a placeholder for testing out the early stages of your renderer.

Share this post


Link to post
Share on other sites
Promit    13246
The problem is that I''m looking to do something similar to a BSP compiler, with lighting calculations and stuff. So the renderer in tmy game is going to be rather different from the renderer in my editor.

Actually, at the moment I''m looking at taking Hammer''s MAP files and doing something with that, but I don''t know.

Share this post


Link to post
Share on other sites
superpig    1825
Well, why not make it flexible enough to work with differing amounts of source data?

When making maps for Half-Life, I constantly find that running RAD takes a long time; so, when I''m still making architectural changes, I don''t run it. The engine provides ''default'' lighting throughout the map as a result.

If you could identify your minimal level (e.g a box with default lighting and no textures, and a start position) then you could calculate it by hand and plug the numbers in. Heck, you could even create a test level file in a hex editor (or text editor, if you provide support for things like levels stored in XML files).

Superpig
- saving pigs from untimely fates, and when he''s not doing that, runs The Binary Refinery.
Enginuity1 | Enginuity2 | Enginuity3 | Enginuity4
ry. .ibu cy. .abu ry. dy. "sy. .ubu py. .ebu ry. py. .ibu gy." fy. .ibu ny. .ebu

Share this post


Link to post
Share on other sites
Promit    13246
Hmm...interesting (I only "learned" to use Hammer yesterday, so I didn''t know you can skip hlrad )..

I think I''ll do that. Thanks.

Share this post


Link to post
Share on other sites