I'm not sure if this goes here but...
Is there a maximum draw distance in software quake engines?
I am interested in random map generation such as mapgen and qb-mapgen, and I understand that they are not vis'ed as they can't be. However, what stops the renderer from getting bogged down by having a non-vis'ed map? Is it a draw distance cap or something else?
Maximum draw distance?
-
mrmmaclean
- Posts: 33
- Joined: Sun Aug 22, 2010 2:49 am
The main problem with a non-vis'd map is not rendering performance, but the fact that the server needs the visibility info to decide which entities to tell the client about. A large map with a lot of entities will become unplayable, with entities disappearing and "Packet Overflow" messages flooding the console.
Fwiw I'm working on a random map generator, though it will be a while yet before the Quake support is any good. Recently I implemented a simple vising scheme which was enough to make most large maps playable.
Fwiw I'm working on a random map generator, though it will be a while yet before the Quake support is any good. Recently I implemented a simple vising scheme which was enough to make most large maps playable.
It can get bogged-down, but watching faces get far-clipped is annoying. Things that improve speed:
1. 'Sealed' tiles- no windows to see distant tiles.
2. Use Skip texture on back faces w/ supporting compiler or remove skip tool.
3. Larger tiles and smaller max tile value. Instead of individual 1x1 grid sections, think of 2x2 or 3x3 grid prefabs with several combo variations.
1. 'Sealed' tiles- no windows to see distant tiles.
2. Use Skip texture on back faces w/ supporting compiler or remove skip tool.
3. Larger tiles and smaller max tile value. Instead of individual 1x1 grid sections, think of 2x2 or 3x3 grid prefabs with several combo variations.
Depends what kind of random maps you're after. If you mean randomly generating a .map then compiling it, no problems there. hmap2's vis process has a view distance feature I think which you can combine with distance fog.
Otherwise, if you're generating maps in QC (just sticking together brushmodels)... I don't really recommend pursuing this route
By the way, if you're interested in generated .maps, you could check out LordHavoc's map generator. I haven't used it myself, but I played coop with LordHavoc using bsps he produced with it. The results are somewhat simplistic, but a lot of fun (if played in DPMod).
Otherwise, if you're generating maps in QC (just sticking together brushmodels)... I don't really recommend pursuing this route
By the way, if you're interested in generated .maps, you could check out LordHavoc's map generator. I haven't used it myself, but I played coop with LordHavoc using bsps he produced with it. The results are somewhat simplistic, but a lot of fun (if played in DPMod).
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.
-
mrmmaclean
- Posts: 33
- Joined: Sun Aug 22, 2010 2:49 am
Sajt, thanks for the warning but the ability to have random level generation during play calls to me and I cannot resist its siren song! (a little hyperbole but honestly I do appreciate your wisdom on the matter) I have already assumed it's going to be a struggle.
qbism, I hear you on the faces disappearing, it looks just plain ugly, but I thought there might be some kind of solution there. As far as your suggestions go, those are some great things to consider. The remove skip is a given, but I have been torn on the larger pieces versus, say, 64x64 tiles, a la 2D tile scrolling engines.
andrewj, I wasn't quite aware of that fact and thank you for pointing it out. I'm totally stoked to see what you come up with in your own project, good luck!
FYI, I'm going more a rogue-like/dungeon crawl route with my project, using the quake side of things for the visual aspect and the Flash side for most of the game logic. I'm using qbism's Super8 engine with a few hack built-ins to make QC variables accessible from Flash and vice-versa (hack is the best way to describe it because there's really no error handling in the matter) and also a function that allows Flash to add strings to Quake's command buffer. So, I can have a button in Flash that changes the map, for example. I can also save any values I need in Actionscript 3.0, so things like having multiple exits/entrances between maps is easy to handle. Nothing is really finished but I'll share the code if anyone wants it, what little there is anyway!
qbism, I hear you on the faces disappearing, it looks just plain ugly, but I thought there might be some kind of solution there. As far as your suggestions go, those are some great things to consider. The remove skip is a given, but I have been torn on the larger pieces versus, say, 64x64 tiles, a la 2D tile scrolling engines.
andrewj, I wasn't quite aware of that fact and thank you for pointing it out. I'm totally stoked to see what you come up with in your own project, good luck!
FYI, I'm going more a rogue-like/dungeon crawl route with my project, using the quake side of things for the visual aspect and the Flash side for most of the game logic. I'm using qbism's Super8 engine with a few hack built-ins to make QC variables accessible from Flash and vice-versa (hack is the best way to describe it because there's really no error handling in the matter) and also a function that allows Flash to add strings to Quake's command buffer. So, I can have a button in Flash that changes the map, for example. I can also save any values I need in Actionscript 3.0, so things like having multiple exits/entrances between maps is easy to handle. Nothing is really finished but I'll share the code if anyone wants it, what little there is anyway!
Given a tile set with a mix of typical maze shapes, corridors, tees, dead-ends, and so forth, there will be an 'optimal' farclip. The farclip is based on a distance that's longer than most views likely to be created. A tileset with a large proportion of open squares and corridors will have a high optimum farclip. A set with lots of corners and tees can be lower.