How do you stop LUA that cheats? - Page 8

How do you stop LUA that cheats?

Various things about Spring that do not fit in any of the other forums listed below, including forum rules.

Moderator: Moderators

User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

imbaczek wrote:
SwiftSpear wrote:not play the game legitimately
This discussion boils down to getting the definition of 'legitimately' right. If you want to take any action, first state very clearly what is legit and what is not.
Using a lua widget or AI, or any other system developed and implemented beforehand not included with the current spring distribution, that controls units automatically in steed of the player, relays more information to the player then he can observe with default settings, or preforms actions humanly impossible or excessively difficult with ease, during a game in which the other players/game host have not agreed to such modified standards. This is my definition of not playing 'legitimately'.

Essentially, anything that modifies the way the game plays on a level deeper than interface or visual preference as opposed to default.
User avatar
KDR_11k
Game Developer
Posts: 8293
Joined: 25 Jun 2006, 08:44

Post by KDR_11k »

We implicitly agree that everyone can do WTF he wants unless we say so before the match. Besides, other RTSes have the stuff we do with Lua by default. As I said, try Earth 2160, Spring feels like Warcraft compared to that. This stuff gets made in Lua because the dev team is busy with other things and if too many hosts start banning Lua we'll just see people requesting the stuff to be put in the main code while the devs reply with "use lua".

In other words, Spring with Lua is "the way it's meant to be played".
User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

KDR_11k wrote:We implicitly agree that everyone can do WTF he wants unless we say so before the match. Besides, other RTSes have the stuff we do with Lua by default. As I said, try Earth 2160, Spring feels like Warcraft compared to that. This stuff gets made in Lua because the dev team is busy with other things and if too many hosts start banning Lua we'll just see people requesting the stuff to be put in the main code while the devs reply with "use lua".

In other words, Spring with Lua is "the way it's meant to be played".
Nope. Devs shouldn't need an excuse to be lazy. Spring ENGINE devs shouldn't have anything to do with this, lua standards for restriction need to be primarily mod side, and possibly server side.

If we implicitly agree that a lua feature should be used the game host should be able to distribute it at the start of the round. If it isn't than no one has implicitly agreed on anything.

An imaginary restriction of "everyone has implicitly agreed" is retarded. The job of a game developer IS to restrict everything they don't want players to do in the game. We're working in a computer system environment here, anything not restricted is theoretically possible. There's a reason why you can't currently press a button on your interface and have every unit of your opponent explode. It might be theoretically feasible to modify the engine to allow that, but it's not legitimate play in any context, and we'd pretty much ban anyone defying that standard. It's not default, and it's not supported. It has nothing to do with implicitly agreeing it's a bad idea. Anything a developer wants to NOT be in the game should NOT be in the game. Including lua scripts that allow me to micro a commander in such a way that he can Dgun passing scout planes. The player is NEVER allowed to say "oh well, screw you developer, I want to do this this way, so you can shove off!". Same goes in the context of players vs mod developers, and same goes in the context of players vs game hosts.

There's no redeeming reason to leave exploitive lua usage open and anonymous.
User avatar
KDR_11k
Game Developer
Posts: 8293
Joined: 25 Jun 2006, 08:44

Post by KDR_11k »

SwiftSpear wrote:The job of a game developer IS to restrict everything they don't want players to do in the game.
Who says the game developers didn't want people to use Lua like this? Isn't that the reason Trepan implemented Lua in first place?

IMO there's no non-trivial task Lua can do better than a human (at least with current hardware) and IMO forcing the player to do trivial tasks all the time is Blizzard-style game design, things like constantly turning mexes on and off is more tedious than fun, as is manually setting some units to hold position or roam or assigning newly built units to groups. Trivial tasks like that consume 90% of the APM in games with horrible user interfaces like Star Craft and as the interface improves the ratio of trivial to non-trivial tasks decreases. It's the non-trivial tasks that require our intellect and it's those tasks that we play the game for.

Also dgunning planes is a bad example, in OTA the AI's com would happily dgun air units and if OTA's aiming code was on par with Spring's it would shoot scout planes down easily. If you as a player don't want your scouts to get dgunned don't let them fly in a straight line, if you as a modder don't want scouts to be dgunned set OnlyTargetCategory=NOTAIR for the dgun, don't hope that the player doesn't have the patience to pause the game, press D and click on the plane or get a script to do that without pausing.
User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

K, I'm arguing that they shouldn't want it then, because the negatives of this type of usage outweigh the positives. The spring dev's/mod devs, attempting to make a good game should be trying to do everything they can to make the most positive project possible. Arbitrary play standards centered around a players ability to code, rather than their developed skill in the game are bad for the community, and bad for the game in general.

[edit] What if I want it possible to dgun fast units, but I want it to be immensely difficult for the player to micromanage? That should be my prerogative as a modder.
User avatar
KDR_11k
Game Developer
Posts: 8293
Joined: 25 Jun 2006, 08:44

Post by KDR_11k »

SwiftSpear wrote:K, I'm arguing that they shouldn't want it then, because the negatives of this type of usage outweigh the positives. The spring dev's/mod devs, attempting to make a good game should be trying to do everything they can to make the most positive project possible. Arbitrary play standards centered around a players ability to code, rather than their developed skill in the game are bad for the community, and bad for the game in general.

[edit] What if I want it possible to dgun fast units, but I want it to be immensely difficult for the player to micromanage? That should be my prerogative as a modder.
Spring is designed to facilitate all possible actions, AFAIK there's no way to force Spring to require micro for automated actions. You could very well pause the game and give the dgun command but constant pausing is annoying and impolite. You can't make your mod require micro for hitting fast stuff (not with the default tags, you can probably script something) just like you can't make your mod require micro to maintain queues or move along waypoints. If you want things to depend on player skill make it non-trivial actions, not stuff like pressing D and clicking on the enemy.

I don't think the game suffers from the use of Lua, as I said, all my Lua does nothing the Earth 2160 default GUI can't do. It merely makes it easier to control stuff, it doesn't invent any strategies for you or builds your base or anything. You still have to do 90% by yourself, just instead of some annoying repetitive actions you have a script do it for you and you have buttons that let you more easily select the free con you want instead of hammering CTRL-B like a retard to find the one you want (hell, even Warcraft implemented a button to select idle cons!).
User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

I agree, spring is inferior to what it allows modders do with the interface. That doesn't mean that we should just be content to sit on a substandard system on that end indefinitely. It's probably not feasible to implement in any soon up and coming patch, but what I'm ultimately arguing here is that the look, feel, and capability of spring game interfaces should be controlled by the game modders creating the titles, and to that end they should also be the ones responsible for implementing AI and script features as standards, and restricting those which they do not want.

In the meantime, ya, I find it ethically problematic that some players decide that because they are good at coding/scripting that deserves them the right to a much easier and smoother player to game interface than every other player just downloading and installing the game is treated to. I've seen that phenomena literally tear other gaming communities apart. "scripting" is the source of 90% of drama in CS for example, CS is a frigging nuclear bomb when it comes to internet drama, and the scripting system there is ages less sophisticated than spring's lua is in comparison. As juvenile as it sounds, people playing competitive games don't like losing, and it's bad enough that they lose to people who are more skilled than them... give someone like that an external reason why they lost, the opponent was hacking, the opponent used an exploit, or worst of all, the opponent used some dev supported scripting system to do something I can't possibly do without figuring out the way lua scripting works... oh god... This is going to be so much work for me :(

Do whatever you want in the mean time, at least acknowledge that some sort of standard needs to be worked towards sooner or later.
User avatar
KDR_11k
Game Developer
Posts: 8293
Joined: 25 Jun 2006, 08:44

Post by KDR_11k »

I doubt anyone uses a lua script he didn't upload somewhere because script writes care less about having an advantage and more about getting their stuff used.
User avatar
TradeMark
Posts: 4867
Joined: 17 Feb 2006, 15:58

Post by TradeMark »

KDR_11k wrote:I doubt anyone uses a lua script he didn't upload somewhere because script writes care less about having an advantage and more about getting their stuff used.
Hackers makes viruses just to piss people off, cheaters uses cheats just because they are bored. You living in a dream... World aint that good place, that people would just be good to everyone :-)
User avatar
zwzsg
Kernel Panic Co-Developer
Posts: 7052
Joined: 16 Nov 2004, 13:08

Post by zwzsg »

"we should standardize it because criminals will use it anyways" is a pretty bad argument if that's the only argument being made alone.
Works very well for the N.R.A.
Arbitrary play standards centered around a players ability to code, rather than their developed skill in the game are bad for the community, and bad for the game in general.
So you say, but I'm persuaded to the contary that rewarding coding ability over reflex is a good thing.

There's a reason why you can't currently press a button on your interface and have every unit of your opponent explode. It might be theoretically feasible to modify the engine to allow that, but it's not legitimate play in any context, and we'd pretty much ban anyone defying that standard. It's not default, and it's not supported. It has nothing to do with implicitly agreeing it's a bad idea. Anything a developer wants to NOT be in the game should NOT be in the game. Including lua scripts that allow me to micro a commander in such a way that he can Dgun passing scout planes. The player is NEVER allowed to say "oh well, screw you developer, I want to do this this way, so you can shove off!".
This is strawman and slanders! Even theorically, it is impossible to use LuaUI or group AI to make all enemy units explode with a press of a button. In case you don't know, there is a very precise set of things LuaUI and groupAI can do, which are mostly the action a player can do with his mouseclick, and anything else is forbidden.

Maybe you got confused by all the "Lua can do everything" posts, but you should not confuse the Lua code that goes with the map or the mod, which has to be the same accross all players or game doesn't synch, and the Lua of the User Interface, which can be personnalised by each player but is very limited compared to its Spring LUA brethen.

The dev who coded the LuaUI and GroupAI interface took great care selecting what can and can't be done with LuaUI and GroupAI, removing all control that would give cheating-like ability, keeping only what can be used to achieve better control of existing actions.

Anything the developers wants to NOT be in the LuaAI or GroupAI is already NOT be in them.

If a player said "oh well, screw you developer, I The plwant to do this this way, so you can shove off!", well

The player, and even the LuaUI coder, canNOT say "screw you developer, I want to do this this way, so you can shove off!", since the player, LuaUI coder, and groupAI coder, can only do what's possible within the calls and stuff allowed by the dev. Well, it's ludicrous to think the dev wouln't have the last word anyway.


K, I'm arguing that they shouldn't want it then, because the negatives of this type of usage outweigh the positives.
Essentially, anything that modifies the way the game plays on a level deeper than interface or visual preference as opposed to default.
"Deep" and "positive" are very relative values.

I've seen that phenomena literally tear other gaming communities apart. "scripting" is the source of 90% of drama in CS for example, CS is a frigging nuclear bomb when it comes to internet drama, and the scripting system there is ages less sophisticated than spring's lua is in comparison.
CS (I suppose it's Counter-Strike) is bad comparaison, because it's a FPS. So a game where the skills are reflex, a game where a bot can outdo most human, a game where you only control one unit at a time so that one unit better not be on full auto, etc... This is entirely different from a RTS which is supposed to relies more on analytical thinking than reflex, where you have so many units that there's never enough time to give even all important orders, a game where even average humans can beat any AI. Just as an exemple of how different they are, an aimbot would ruin a FPS, but in a RTS all units have "aimbot" by default.

If we look at all exemples provided so far, none has broken Spring so far:


- Giving everything in comm end team game was already possible manually, the lua wigdet just render more apparent the flaw in team + comm end + sharing.

- Dgunning plane is just an aimbot, while aimbot are considered as cheat in FPS, they are supposed to be on by default in RTS. If any modder feels planes should not be dgunned, he has plenty of varied way to prevent that.

- That stuff about nanotower... well it sounds like it just make them useful, as opposed to standing idle until you get around to give them orders. Not a cheat, just a very needed feature.
User avatar
Boirunner
Kernel Panic Co-Developer
Posts: 811
Joined: 05 Feb 2007, 14:24

Post by Boirunner »

Again I find myself completely agreeing with zwzsg.
User avatar
Neddie
Community Lead
Posts: 9406
Joined: 10 Apr 2006, 05:05

Post by Neddie »

Boirunner wrote:Again I find myself completely agreeing with zwzsg.
Well, I'm on the boat as well.
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

zwzsg - says what other people don't have time to. +1.
tombom
Posts: 1933
Joined: 18 Dec 2005, 20:21

Post by tombom »

Boirunner wrote:Again I find myself completely agreeing with zwzsg.
I can't think of a single zwzsg's post I've disagreed with actually. He is v. clever.
SecurE
Posts: 87
Joined: 29 Apr 2005, 23:49

Post by SecurE »

I will probably regret coming into this discussion, but here we go.

I actually disagree with zwzsg (or at least with his post), and agree with SwiftSpear. It should be up to the modder to decide how powerful the interface should be, not the players as such.

Just for arguments sake, I'm going to outline a simple mod where I actually want a less powerful interface (and reduced unit behavior). I will even use the a favorite among the crowd, removal of auto-attack! Let us for the moment ignore its feasibility and how fun it is.

Mana is metal and/or energy.

You would have to be able to disable certain standard behavior (auto-attack, area attack, maybe by turning the weapons into d-gunned weapons?) which I don't know if it is possible at the moment etc, but as I said, let us ignore its feasibility.
Actually I think I'd keep area attack anyway.

The first side is "The Wizard". It consists of three (or more, depending on how the spells would be made) units:

- The (Wizard) Tower
-- This is the commander of the faction.
-- It is stationary.
-- It builds Golems.
-- It builds a limited amount of "spells"
--- (LUA "magic" or by using units with a single weapon).
--- You need to manually attack with the spells.
-- It produces a limited amount of mana.

- The Golem
-- It is mobile.
-- It is powerful.
-- It is forgetful (if possible).
--- (LUA or load trick after certain intervals).
-- It is mindless (no auto-attack).
-- You can only select one at a time (not a requirement).
-- It builds Mana Taps.
-- It has a mana upkeep

- The Mana Taps
-- It is stationary.
-- It is a metal extractor and/or geothermal powerplant.
-- It extends spell range around it.
--- (LUA magic or by detecting the presence of "spell units")


The second faction is "The Undead" with a whopping four units.

- Tomb
-- This is the commander of the faction.
-- It is a stationary.
-- It builds Zombies and Executioners.
-- It produces a limited amount of mana.

- Zombie
-- It is weak.
-- It is forgetful.
-- It roams. (Moves randomly after forgetting its orders)
--- (LUA might work)
-- Can only select a limited amount at a time (x amount).
-- Does not damage Wizard Towers.
-- It builds Graves.

- Executioner
-- It can only damage wizard towers.
-- It has a mana upkeep.

- Grave
-- It is a metal extractor and/or geothermal power plant.
-- It produces Zombies.


So basically it is a micromanage game, let me repeat that, it is a micromanage game, that is what it is designed for. People often say that they want to let the engine do more than simply imitate a TA gameplay, so do not pick on this part of the argument simply because you do not personally like micromanagement.
The "wizard" will have to keep controlling all of his powerful golems and spells to prevent the undead hordes from reaching the tower.
The undead has to keep control of his Zombies (which he can at least do in larger hordes) and take down Golems, while trying to get an Executioner to the Tower past enemy Golems and spell flinging Mana Taps and the Wizard Tower defenses.

Fun? Pfft, who knows, but you don't want a player to be able to use LUA to automatically update attack and move orders.

(Disclaimer: I don't actually know exactly how much power you have with LUA over the interface, but I will assume that it is capable of giving attack/move orders to units and thus be able to auto-update "forgotten" orders.)

[Edit: Just another less extreme example/question]

Let us look at a more subtle difference (in my opinion), in this example I will only look at a single unit.

- Shade
-- It is a mobile unit.
-- It is a stealth unit.
-- It is a cloaked unit.
--- The cloak will turn on and off periodically, the player can not affect it.

It is basically a stealthy attacker/scout/whatever, but one that will come into LOS from time to time. Now what if I don't want the player to simply have a LUA script that tells you whenever one comes into LOS? It is after all a (mostly) stealthy unit, so I don't want it to be that easy to detect, but if you are lucky and/or actually paying attention to your base/units, then you will notice it.
Note that this doesn't even introduce any more micromanagement at all, you don't gain anything by clicking around wildly as the unit would show up on the minimap whenever it comes into LoS. You could claim that it does have an element of luck in it though.
On the other hand, I actually know mod (ideas) where I would want there to be a message anytime anything enters LOS as standard, but it is a thing that I would prefer to keep in the modders hands. All of this is only theoretical anyway, the modder can't do anything about it at the moment, unless you make a custom Spring version.

A minor thing such as that can have a remarkable difference on what you can do with Spring, a powerful LUA UI can actually be a limitation that prevents or disrupts certain mod ideas, and ultimately it is the modder that should (try to) decide what kind of gameplay he wants his mod to have.
You might think the two examples I have are silly (and I don't think I'd even like the Wizard/Undead mod myself), but what is the argument against letting the modder restrict what the LUA UI can do (except the fact that some dev would have to do some coding to make it possible)?
Last edited by SecurE on 26 Jun 2007, 04:25, edited 2 times in total.
User avatar
Dragon45
Posts: 2883
Joined: 16 Aug 2004, 04:36

Post by Dragon45 »

The interface is how the player reacts with the game universe. Interface limitations are just those - limitations. They limit the player's ability to interact with the game world. They are shackles.

If a modder has to put deliberate restrictions on the interface, then there is something wrong with the universe, not the interface. Starcraft + 12 unit selection max, anyone?

Spring is an RTS game. I am of the opinion that certain mods (War Evolution, the aforementioned Mana + Wizards game) that push the limits of the engine past what it was intended to support are exceptions to the rule. The rules should not be rewritten to accomodate them.

There are no superhuman AIs in existence yet (that we know of :P ) that can ive a human an advantange over where it matters in an RTS game - planning and timing. Look at rAndy - he clicks god knows how many times a minute, but the reason he's good is because is because he has a sense of timing and planning. If you automated the mundane clicking somehow, he would still be near the top, because of these two things.

Let LUA be LUA, and let it push the boundaries of what an interface can do. If you want to make a micro-intensive, interface restricting game, take it to another engine. Spring is for modern RTSs.
User avatar
quantum
Posts: 590
Joined: 19 Sep 2006, 22:48

Post by quantum »

I completely agree with zwzsg.

In .75 , I think that LuaUI will be on by default, and modders will certainly be able to include widgets in their mods. This should help level the playing field.
User avatar
Nemo
Spring 1944 Developer
Posts: 1376
Joined: 30 Jan 2005, 19:44

Post by Nemo »

I agree with secure. although he's somewhat arguing a made point, since a mod can enable .nohelp, I think.
SecurE
Posts: 87
Joined: 29 Apr 2005, 23:49

Post by SecurE »

Yes, I wasn't aware of that when I posted. It is better than nothing, but it isn't the best solution.
User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

Ultimately you're argument still basically comes down to "This is an RTS game, and therefore the players shouldn't have to micromanage their units, so it's fine that they have lua/AI to do it for them."

But the thing is, we're not dealing with "an RTS game" here. We're dealing with a gaming engine. The individual games the modders make should be able to choose their own standards of play. If a modder decides that aimbot dgunning is cheating, they should have the power to block it, and FORCE it to be done manually.

You're making a straw man out of my argument with the indication that I'm arguing against LUA and AI being used universally, as if I'm attempting to force you to do useless micromanagement in all cases. I just want people to adhere to an agreed upon standard of play. If the modder/game host wants to block aimbot dgunning on the script side that should be an option available to them.
So you say, but I'm persuaded to the contary that rewarding coding ability over reflex is a good thing.
That right there is the root of the problem. It doesn't matter weather you have the opinion that "coding ability over reflex should be rewarded" is. There are other people that do not share that opinion. Neither side is right, that is why the system must move towards optionality. If we're talking about BA, or 1944, you make a decision one way or another and stick with it, but we're not talking about mods, we're talking about a game engine. No decision should be one way or another, it should always be as optional as possible. Basically you're advocating directionalizing the engine, and it's just bad policy. If I want to make a micromanagement focused mod with lots of special unit abilities and what not in the future, I don't want to run up into it just being impossible because people will just code LUA and AI cheats and break any micro intensive system I work hard to put in place. I need the ability to lock them. I'm the mod designer, the players don't get to code shit and change the way my game is played after the fact. I ALONE change the way my game is played, or else the engine is flawed.

Similarly, if I want to add lua widgets to my mod and make it much easier to strategically maneuver and order my units around, that should be my prerogative to do. I shouldn't be forced or restricted by a poorly standardized system one way or another. If I'm fine to just let people customize their interface however they want as a modder, cool, why not?
Post Reply

Return to “General Discussion”