Limitations on Source engine

E

Eugene

Guest
Hi. I am planning on gathering a small team to start working on an ambitious project... so far it looks like modding the Source engine might work out quite well, but there might be a couple issues that might be "un-codable" using the SDK. I'm wondering if anyone here knows so that I can save myself some time and find a different engine to use.

1) Envision this scenario: I've got a number of multiplayer maps. The exact number doesn't matter, but the point is that there are more than one. Would it be possible to create a server environment where when a player reaches the edge of a map, he is removed from that map by the server and placed onto the right position on the next one? It seems to me like this should be possible, since any co-op mod would need something along these lines.

2) I know that most mods feature at most about a dozen weapons. Is this some sort of limit? Is it possible to have, say, hundreds of different weapons? Obviously, the GUI would need to be reworked and many of the weapon models would only be slight variations on each other for the sake of development time, but can it be done?

At the moment, these are my two primary concerns. Does anyone have any ideas?
 
Hundreds of weapons? That would take FOREVER to make...
 
Im not sure of Source engine limits, but I do know this.
Source isn't the easiest thing around, but it is very powerfull.


btw, if your just going to make weapons slight variations of eachother then what is the exact point? Your then just making it a "gimmick" to say. If your make all variations actually mean a very very big thing and count then I guess it wouldn't just be a "gimmick".

Anyway, im sure you can have TONS of weapons, but you will also need a easy to use interface for it all.
 
1. Doable, but really, REALLY difficult, because the engine's not designed to take it.
2. Doable, but you'd have to have an inventive system, like only 20 base weapons which can have multiple model variations, each one with its own stats and power levels.

It's the playercount, the physics, and the general lag that are the biggest hurdles. Source is not cut out for MMORPGs.

-Angry Lawyer
 
1. I think this is doable, though I'm not a coder, but a mapper.

I can foresee this being possible on one map but I wouldn't see the point of it. You could have teleport edges that take you to the same place relative to the next area of the map, but this wouldn't be so simple (correct me if I'm wrong on this). This would not be a point entity, but a brush-based entity which would go all the way along the boundary 'wall' of once area. When you touch it at a particular location it would have to remember that point and send you out of the same point of the corresponding exit teleport. If you wanted it to remember your orientation and speed it would become more complicated, and slightly more complicated if you wanted it not only to remember your X value along the 'wall' but also your Z value (how high up you are).

When I say 'complicated' I'm not always talking about it being complicated to code, but also that it will draw more on your system resources, which you don't want to be doing with online games.

Now, when I was talking about the imaginary wall I was imagining a seamless landscape; you cross a field and when you reach the invisible boundary you move to the next area of the map. A better way to do this would be: you cross a field and reach a fence. You can only pass at the gate. This means you can simplify some of the process as we could say that once through the gate you always start at the same point in the centre on the other side.

But the main thing about this is how much information you're going to have on the map at once. Yes, you could have a whole set of 'levels' all on one map, so when you teleport from one to the other you have the impression of being in a larger world all on one level, when in fact you're just going downstairs. This means a huge amount of data in the map which, in turn, means a looong loading time and horrible lag for anything other than a mega computer (unless you make your maps out of lego bricks at a scale of 1:500!).

One way to have detailed maps and still get around this is (possibly, I think this would work) to have one map per server. When you exit one area you enter another and get redirected to the server running that map. Depending on how detailed you made your maps, the load times would be shorter. One drawback with this idea would be that you wouldn't be able to communicate with people on another server. So if your mate didn't teleport through, you wouldn't be able to talk to him until he did. And if you went back to the previous server he might arrive in the second map just as you leave.

In short it all depends on scale and detail. If we're talking about a walk in the park then it could work on one map, but if we're talking about a walk in the countryside it's another matter entirely.

I'm probably going to be contradicted by a coder with much more knowledge than me on the subject now, but I thought I'd throw that into the hat.
 
Ah I see what you're talkin about now, so the latter points I raised are the relevant ones.

This would work on Source but on very low detail (for the load times). If you make a game with long load times you will never get a proper following. Also think about that gate in a fence motif I mentioned.

If you want it 'free-form' then it will require one server running for every map you have. If it is linear, like co-op, you can have one server that changes maps.
 
-Crispy- said:
If it is linear, like co-op, you can have one server that changes maps.
But what happens when only one player makes it to the finish? :)
 
He enters the teleport and goes into spectator mode (if the creators have deemed this a suitable thing to be implemented), or he waits until his buddies catch up.

Most of the time people like questing together and don't see co-op as a speed challenge.
 
1 would be hard to not only do, but to do right. Makeing it so he has to wait for other players isnt a good idea. If someone goes afk or you have someone that stays behind on purpose it will ruin it. You could have a server side timer that starts after the first person or two cross the finish line and when the timer is up, the next map is loaded even if everyone didnt finish.

2 is definitely possible, but hundreds of weapons? That's going to take a really long time to code, model and animate. What's more ideal is having a base weapon where you can add stuff to it and just attach a model to the existing one via bones and adjust the stats through your code depending on what is equiped.
 
to me, it looks like you are playing with the idea of an MMO type of mod.

In this situation, with the maps and areas you need a type of zoning server, which is a server that handles different parts of different maps.

With source, it would involve some way for the client to communicate with "a" server on position (which is most important) and it would communicate its netcode elsewhere.

Now, the fun part.

When dealing with multiple zones on the same map, you would have to rewrite the entire pre-cache routines for levels, to push them all to load at first connect, and not on zone connect, so zones would literally be a second or so to just connect, validate, and go...

When dealing with the multi-connections, this really takes some network ingenious on your part, and creating a 3rd application to run along side of the system. It is completely do-able, and only takes experimenting and breaking sockets to figure it out :p I would try to stay away from winsock sockets if possible.

On the weapons, possible, it would be best to create a wrapper for each type weapon, and abstract the specifics to either a db or text based system so you don't have a class for each of those 100's of weapons. for instance, you would want to have a pistol class that allowed you to set the name of a script file for model, animations, speed, ammo type, etc... This is the best way to hanlde that many weapons.

Hope some of this helps, still waking up, but i think you can get the point
 
it sounds very complicated and difficult but if you did manage to pull this off i think it would be a big hit with the community.
 
Back
Top