 |
|  |
 |
|  |
 |
|
Vultur
|
 |
Milan
Jun 2000 time: 06:24
|
|
quote: Originally posted by Blake
Also, constants arent scripting. Costs and stuff can be put into text files so users can readily edit them. Same with AI priorities and stuff. This does allow modding, but isn't scripting.
|
Ok, but modifing these text files will allow cheating in MP.
My idea is to protect the file with one of two methods posted above:
Method 1
The Script and the TXT files are sended by the server to the client during MP sessions. During SP the game will use local files.
Method 2
The Script and the TXT files are on client HD but codified and the key to decipher is sended by the server. Obviusly there is also an un-coded version (on client HD) of Script & TXT to allow moddability and Open Sourcing
Scriping is more simple because you have not to recompile 100 times the program to find the solution.
Do you agree with me?
Last edited by Vultur on 08-12-2002 at 15:32
|
|
|  |
 |
|
Leland
|
|
Method 1 sounds more sensible too... after all, scripts and mods are game-specific and only need to be sent once per game, even if game consists of several sessions. As for encryption, I don't see it as a crucial feature... even if the ruleset isn't encrypted, it should be fairly easy to verify that it's either "standard" (since standard rules are always delivered with the game binaries), or at least fair (the client could warn if some players have advantages others don't have, for instance).
|
|
|  |
 |
|
Martin the Dane
|
 |
Aarhus, Denmark
Feb 2000 time: 06:24
|
|
Why all this talk about cheating, if the turns are resolved on the server, any changes made by the client will have no effect on other players. It is easy to verify that the player do not send back a turnfile with the wron number of eg. ships as they only change while the game is being resolved. The only thing the user should send back is a set of orders, these schould offcause be generated by the client. But if the player changes them, he/she is only changing the orders, and since thy are not given until thy are sent to the server, that is not cheating.
Let's take an example: The player designs a new ship, equiping it with weaponds he does not have the technology for, because he have edited the localy stored rules. Since the edited rules are not sent to the server the undeveloped weapons will not be added to the ship, and the player will get a ussless ship.
As for maps, I will recomend that you look at the ones used by FreeCiv, they have a section for each player, only containing the information known to that player, so again here, changing the map will be pointless. The map is not transmitted to the server and a new "local" map is generated each turn for the player.
To limit the bandwith usage, it's only nececarry to transmit the changes to the game file back to the player, again editing the gamefile will only result in illegeal orders, taht can't be carried out.
Naturally the server keeps a copy of the full game-file as well as copies of each players game-file.
Now it becomes the players own problem wether or not he moddifies the game, as it has absolutely no effect on other players. It only makes it much harder for himself. Think of a spaceship-weapond haveing the description and gaphics of a shovel.
Or the other way arround, if player A modifies the local rules, so that the id for a unit or weapond, has much higher stats, than in the rules on the server. His game will now tell him that he can attack player B with eg. the ods 10 to 1 where the real ods might be 1 to 10. Who cheated who?
My conclusion is: Don't be affarid of scripting languages on the grounds of cheating, if the game is optimized for low bandwith it will automatically make cheating impossible through changing the script.
As for costumizing the goveners well, arn't they just suppost to limit the micro-management?
|
|
|  |
 |
|
Leland
|
|
quote: Originally posted by Vultur
If you think at PBEM games, to the server will be sended datas like pop, bases, credits etc.
So there are a lot of things that can be "cheated". |
Uh, no. Quite the opposite: the server sends the clients all the data they need, something in the lines of "you have X credits and N bases. What do you want to do with them?", after which the client sends the host his orders. If the orders don't match what the server knows about the players' resources (for example, client tells to spend 1000 credits when the player only has 100), then the host will notice it and not carry out impossible orders. So there will be no chance to cheat... compare it to a email chess for example: if you send the guy who hosts the chess match moves that involve pieces you don't have, you don't magically gain those pieces, but rather your turn gets disqualified. This game is of course a lot more complex and involves quite a few more details than chess, but the principle should be pretty much the same.
quote: There can be a third method to have some security, that can discover script/TXT cheats, but not "correct" them.
It's possible to assign a "string" to each Official Mod that is a "function" of the variables wrote in the files.
Checking the variables stored in the HD with the Official Mod string sended by the server.
It could seem a bit complicated, but is more efficient than decipher/send TXTs. |
Actually, this is exactly what Blake and others mean when they talk about digital signatures... you don't actually have to encrypt the stuff sent between clients and host (that would be a bit of an overkill for a computer game), but rather you use a hash function on the binary-coded ruleset (or the text-coded, but it's more efficient and safer to use the binaries I figure), then encrypt that and use it as a signature. If someone changes the ruleset, the new signature calculated from it won't match with the one provided with the game (or downloaded from official Stella website, or whatever).
Not that I think this is necessary, since comparing the rulesets directly does the job just as well. But if you insist on using signatures, that's the way they work.

|
|
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
Correct me if I'm wrong, but this thread seems to diverse slightly from its original direction, namely scripting languages.
Concerning previous post, I agreed that client must be "dumb" and unaware of general game position, the only thing it really needs is current turn player data, so cheating will be fruitless and pointless .
Returning to original thread, I have one opinion about unit design in general. In most games, units are described using limited number of options, like HP, to-hit, attack strength etc. This is good, but IMHO, not enough for interesting game. Some units/weapons/techs/locations/etc. may have very specific properties (examples: some unit is specialized predator for other units regardless of its "actual" attack power; some units may hide completely while on some surface and stick up like idiots on other tiles; some tech may be useful only for some player faction/planet type combinations; ...). Traditional table-driven approach seems unsuitable for such a special cases, so here scripting may be _very_ helpful....
|
|
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
OK, Lua is't worst script out there.
I may suggest you Guile, as it's good example of real rather than toy language, but I figured out its Scheme syntax (S-expressions that is) may terrify most of StPDT. It's pity, but I can't change the way of things: most people think they know programming while they actualy do't know any Lisp dialect. 
So Lua may be used, it is't bad as is, but you should know that its "upvalues" are very downgraded variant of Lisp closures. In fact, Lua may be viewed as "Lisp for lazy", excuse me. 
Python, on other hand, seems to be 1) successful language used in many successful projects 2) implementation rather than language in its own right 3) way to heavy in runtime and not much elegant in syntax.
New candidate languages for public dissection?
|
|
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
Tcl? Just say No!
|
|
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
In fact, Guile and Scheme ist something so "unordinary", it's used in Gimp, for example. BTW, we may in fact use distinct langs for server or client side scripting, while it is't 100% good (but client scripts must be keept at clients side as security measure and server side scripts are simply pointless for client). I'm artist, not a coder, so while my personal preference is Guile (among other things it has true threading support, BTW) I know that most of burden of coding is on your shoulders so final selection is yours.
|
|
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
C/C++ is enough for the core, but game itself is't just a core. We need some higher abstraction layer to explain game logic and other things. It's too boring to code all this stuff on C++.
According to image loading, did you try DevIL (Developer Image library), it integrates seamlessly with OpenGL. And that about making GUI via GL textures rather than ordinary blits, it's faster for modern cards and promotes good things like automagic scaling, blending etc.
|
|
|  |
 |
|
targon
|
|
Dolgoprudny, Moscow region
Nov 2002 time: 08:24
|
|
OpenGL and no voting. Game is meant to be cross-platform so forgot about DirectX and friends. I said about OpenGL for _menu_ system. It ist very common but some games seems to use it in that manner; at least, you will have consistent system and clean Z buffer. Bah, one more: do't forget about poor souls owning 3D goggles (it's cheap nowdays). 2D menu system with some 3D in background/main window/PiP looks _really_ wierd in that goggles.
|
|
|  |
All times are GMT. The time now is 05:24. Apolyton Time is 00:24. |
top of page
|
|
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|