What Can We Do

The original, free Ace of Spades game powered by the Voxlap engine. Known as “Classic,” 0.75, 0.76, and all 0.x versions. Created by Ben Aksoy.
143 posts Page 8 of 10 First unread post
bloodfox
Post Demon
Post Demon
Posts: 2206
Joined: Mon Oct 21, 2013 4:32 pm


Which client.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


backwardsbash wrote:
Admin edited it. Used to say "fuck off lincent"
Because pointing out the elephant in the room is a bad thing and we should never do it.

Even though it's not the blatant elephant in the room that probably about 20% of topics are about, which is Nobody Can Be Fucked Doing Anything, which at the moment seems to not be the case so that's good.
LeCom wrote:
"get better PCs" is never a good argument, seriously. Look at Ken.
Good idea, let's look at Ken.
09/21/2007: Core 2 Quad 2.66 (Newegg / custom built)
11/13/2010: Core i7-950 3.07 (Newegg / custom built)
11/25/2014: Core i7-5820K 3.30 (Newegg / custom built)

All computers have been sold, discarded, permanently lent, or returned except for the TI-99/4A and the last 3 or so on the list.
Welp, there goes that argument.

Your point of "the optimisation rules have changed" does hold though.
LeCom wrote:
Source is on github.com/lecomm/aof-client and github.com/lecomm/aof-server
Nice. Two things. s/Ressources/Resources/, and you forgot to include the derelict/ directory. EDIT: Spoke too soon, trying to get dmd working now.
LeCom wrote:
You're saying the server shouldn't just accept hit packets and check them first;
I'm saying that the protocol should actually give the server more information than "I hit this body part of this player at no specific point in time". I propose this:
Code: Select all
struct hit_packet {
  uint16_t timestamp;
  uint8_t packet_type;
  uint8_t target_player;
  uint8_t target_body_part;
  vec3f source_pos;
  vec3f target_pos;
  vecdir source_orient;
};
With appropriate padding of course. But that's pretty much the info you want. It means you can do a single straight raycast for your line-of-sight check, rather than using a fuzzy approach of some sort.
LeCom wrote:
well, CAN the server actually detect fake hit packets,
Only in the more blatant cases, e.g. you're in A1 and you're trying to kill someone in H8, or you're in a tunnel and you'd have to fire a shot through 10 blocks to get anywhere near the enemy. However I believe it does do a line-of-sight check, but regularly fucks up and cancels hits because it has almost no information.
LeCom wrote:
or are you talking of AoS's hack detection scripts
Shit, hide your kids! Pulchy's got a no-recoil hack!

Yeah those get false positives as well. Even though I wasn't talking about them.
LeCom


Marisa Kirisame wrote:
LeCom wrote:
"get better PCs" is never a good argument, seriously. Look at Ken.
Good idea, let's look at Ken.
09/21/2007: Core 2 Quad 2.66 (Newegg / custom built)
11/13/2010: Core i7-950 3.07 (Newegg / custom built)
11/25/2014: Core i7-5820K 3.30 (Newegg / custom built)

All computers have been sold, discarded, permanently lent, or returned except for the TI-99/4A and the last 3 or so on the list.
Welp, there goes that argument.
Nope - why care about what he bought nowadays. What did he have when he wrote Voxlap? Pentium 3-4, that's around 1.5 GHz. Plus, somewhere he mentioned it only requires 128 MB RAM.
Marisa Kirisame wrote:
LeCom wrote:
You're saying the server shouldn't just accept hit packets and check them first;
I'm saying that the protocol should actually give the server more information than "I hit this body part of this player at no specific point in time". I propose this:
Code: Select all
struct hit_packet {
  uint16_t timestamp;
  uint8_t packet_type;
  uint8_t target_player;
  uint8_t target_body_part;
  vec3f source_pos;
  vec3f target_pos;
  vecdir source_orient;
};
With appropriate padding of course. But that's pretty much the info you want. It means you can do a single straight raycast for your line-of-sight check, rather than using a fuzzy approach of some sort.
Aside from possible hack detection (which it can't help with), that is not particularly interesting for me right now. I can put it on my TODO list tho'.
longbyte1
Deuced Up
Posts: 336
Joined: Sun Jul 21, 2013 7:27 pm


You are one who likes to nitpick what other people say (it's just irritating to me when people do that "let me respond to you quote by quote"), so I will keep this short so you don't have much to nitpick Blue_Tongue.

We won't be making the next Voxlap for sure but we still want an engine that can run well on legacy hardware (such as laptops with no dedicated GPU) but that still appeals to people with the "latest and greatest."

Also, I despise hack detection, even though I've never worked on such a thing before. The reason is that the whole notion of kicking/banning lies on the philosophical part of justice. In order to determine whether or not somebody hacked or it was just a glitch in the client, you have to look at intent. And how exactly does a computer detect intent or not? One would say "well, just leave it to the humans to decide," but this would be unreasonable if people came to appeal by the dozens every day on a small server. So this just turned into statistics and tweaking your alpha levels/levels of significance in order to minimize your number of wrongful kicks (type I errors) while making sure that everyone who actually cheated got caught (type II errors). I'm not sure there is a direct application of statistics to automatic cheat detection in video games but it would make a nice paper.

Regardless, there are numerous ways one could cheat, but most of them I would say have trivial solutions, such as infinite ammo/health, fast walking, teleportation, etc. The more challenging problems to solve are detecting hacks on well tuned ESPs, such as those that "aim assist" instead of blatantly locking to the nearest target. It would require an analysis of hit/miss ratios, comparing each player's H/M to the average, where confidence increases with (H+M). The angular velocity of the player as the target was headshotted also needs to be factored in, where higher means more unusual, as well as the difference between the actual hit angle versus a hit angle calculated by a computer (where lower means more unusual).
LeCom


Blah blah blah blah kkkkk we're going to nerf aiming anyways, so detecting aimbots should be much easier.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


longbyte1 wrote:
You are one who likes to nitpick what other people say (it's just irritating to me when people do that "let me respond to you quote by quote"), so I will keep this short so you don't have much to nitpick Blue_Tongue.
Don't underestimate me. I can nitpick anything.
longbyte1 wrote:
We won't be making the next Voxlap for sure but we still want an engine that can run well on legacy hardware (such as laptops with no dedicated GPU) but that still appeals to people with the "latest and greatest."
By "legacy hardware", can you keep the minimum requirements at no weaker than "GL 2.1 + FBO extension"? I have a GMA 4500 MHD and that thing can beamtrace at 320x200 at a decent framerate.

(GL 2.1 hardware can do FBOs, it's more of a "can this driver be bothered" matter.)

And hey, there's people who say that the Intel HD 3000 is a slow sack of shit. And they're wrong because that thing can beamtrace Block 'n' Load maps with shadows and still stay above 30fps @ 720p.

Then there's people who think the GMA 3150 is anything other than a crime against humanity. Seriously, do not even attempt to support hardware that uses that. You will lose your mind, assuming you don't say "fuck this shit" before that can happen.
longbyte1 wrote:
Also, I despise hack detection, even though I've never worked on such a thing before. The reason is that the whole notion of kicking/banning lies on the philosophical part of justice. In order to determine whether or not somebody hacked or it was just a glitch in the client, you have to look at intent.
Some cases can be weeded out, e.g. this weapon arrangement by yours truly.

Image

(the minigun at the time was weakshit but the SMG in that game was actually hella fun to use and at the same time not an overpowered bulletshitter)

Otherwise, it's a shit of a thing to detect as you're basically working in the field of AI, and AI is a shit of a thing, and people can tune their algorithms against your algorithms.

One approach is to tune your gameplay such that an aimbot/ESP would be detrimental. I had a messed up idea for this but it would be tricky to implement and would be a very different game.

With that said, there's a reason why the hack detection scripts used on the Aloha servers (and on Minit when that was still a thing, RIP) just simply alert the admins when something weird happens. If you repeatedly see "Suspected no recoil hack detected" or whatever the hell it is from a player, that's when you go in with a first person spectate hacktool and do the banning manually.

- <3 -
LeCom wrote:
Blah blah blah blah kkkkk we're going to nerf aiming anyways, so detecting aimbots should be much easier.
While you're at it, mind nerfing holding down the left mouse button? Cheers.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


VAC is a flawed system.
Also 1.0 is gay and autistic.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


Icarus North wrote:
laptop that ran OpenGL 1.5
Back everything up onto somewhere that isn't on your hard disk, wipe the hard disk and shove Linux on it. There you go, OpenGL 2.1 support. Assuming it's an Intel GPU of course. Access to al ur gaemz can be sorted out later.

Apparently Mint is a good distro for people who aren't used to Linux. You can shove on a more lightweight window manager (fvwm is probably one of the nicer ones) to recover some RAM once you've got things up and running. I can help you with that stuff.

Although if it's a GMA 3150 it's a sack of dicks and needs to be burnt. A GMA X3100 on the other hand is somewhat reasonable and seeing as you said "laptop" and not "netbook" it's probably the X3100.

After all, if it's one of the laptops that have an X3100 in them, there's probably nothing you use on it that actually *needs* Windows.
longbyte1
Deuced Up
Posts: 336
Joined: Sun Jul 21, 2013 7:27 pm


Marisa Kirisame wrote:
Then there's people who think the GMA 3150 is anything other than a crime against humanity. Seriously, do not even attempt to support hardware that uses that. You will lose your mind, assuming you don't say "fuck this shit" before that can happen.
Haha my ThinkPad R51 (from 2004) has an 855GME chipset. It's so old and obscure it's not even on Wikipedia. Heck, I have to run GNOME fallback on it (although granted many old computers can't run the Unity panel). Heck it's so outdated VirtualBox doesn't let me run an emulator. Heck it's so outdated Linux doesn't even detect PAE on it. Beat that for outdated laptops Blue_Tongue
Marisa Kirisame wrote:
Otherwise, it's a shit of a thing to detect as you're basically working in the field of AI, and AI is a shit of a thing, and people can tune their algorithms against your algorithms.
AI against AI? Now we're talking! I've always wanted to study machine learning (not the milder stuff, but as in actual machine learning), so if I ever decide to make such a thing, it would definitely make an educational experience.
Chameleon
Modder
Modder
Posts: 601
Joined: Thu Nov 22, 2012 6:41 pm


Since this is a bit less childish and active topic on BnS that I'm in, let me spend a couple minutes off my sleep :P
longbyte1 wrote:
AI against AI? Now we're talking! I've always wanted to study machine learning (not the milder stuff, but as in actual machine learning), so if I ever decide to make such a thing, it would definitely make an educational experience.
Cool, but hard (IMO) stuff. Though it could be made simple:
If AI gets shot a lot, it would prefer having a helmet or doing a different playing style (etc. more camping/sneaking/strafing). If AI runs out of ammo, it would grab extra ammo. If, in the future, AI will see a lot of hurt teammates, maybe it would grab a medkit and act as team support?...

And it's not like we need AI to start thinking about "how to build a bunker", but rather "where should I place this bunker/wall preset".
longbyte1
Deuced Up
Posts: 336
Joined: Sun Jul 21, 2013 7:27 pm


Well, since we've started talking about AI now and LeCom has also begun working on bots, here's the design problems and ideas I've had in mind for a couple of years now:
  • Dynamic pathfinding - rebuild node graph or a section of it only when a critical path between two nodes has been blocked due to changes in map, or a more optimal path is found between two nodes that would suggest the creation of an extra node.
  • Identifying structures - AI has no humanity and couldn't tell between a statue and a giant mountain except by their height gradient (slope). They also don't know what the difference is between ally bunkers and big half-made, half-griefed buildings (because by definition they are essentially the same thing).
  • Flexible roles - sometimes bots die and the mission must continue with a smaller squad. In AoS, there were no classes, only changes of weapon. Thus the AI as a collective could designate a place to construct, and bots could assist each other, defending each other based on health, ammo, and number of blocks left.
  • Finding good places to build - this is a tough problem that I don't know how to solve, because it requires analysis of the prefab to be built (purpose, resource requirements, and shape?), as well as a survey of the terrain's feasibility (how much digging is required?) and the distance between the building and the front lines (what is gained from placing it at that location?).
  • I would start out by placing metadata ("botdata") manually on the map, including default pathfinding nodes, suggested locations for building prefabs, and ally/enemy zones. Later a tool could be developed to do all this for you using algorithms more advanced than I'll ever know in 5 years.
  • Priorities/weights - bots have individual objectives assigned, but sometimes levels of concern such as ammo, number alive in "squad," health, and even the status of the game objective (like intel) can cause a recalculation of objective if they seem too important that they hinder the ability to complete the current objective. Thus each objective can be defined with specific prerequisites which must be met in order to continue. I would not implement an "after X completed, go back to previous/next objective" because it would lead to a stack-based objective system shpeel that would make everything so complicated and convoluted LeCom would start crying 50k lines into the code.
  • Human-AI interaction - humans are strange and misunderstood to computers, so no
  • Tunable algorithms - behavior of AI should be based on certain factors: risk (0 -> defense/turtling, 1 -> offense and high aggression with no regard for factors that may endanger the completion an objective), profile (0 -> covert and always aiming to be hidden from enemy sight, which translates into longer paths; 1 -> always barging into and through the front lines with little need for cover, which translates into the shortest path possible), accuracy (0 -> absolute idiots, 1 -> aimbot), and alteration (0 -> no changes in terrain whatsoever; if no path can be found to enemy or objective, just stick around; 1 -> dig through mountains, chop down all trees, grief everything, build giant towers; foolish but can be highly destructive).
  • Formations for surprise attacks, rifle volleys, dodging grenades, and such.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


OK, you might have one of the few laptops still ticking with a worse GPU in it than a GMA 3150. If you've got a raspi, see if you can get the experimental OpenGL driver working. It'll probably be faster, even though VideoCoreIV has fillrate issues... but that's not a problem as you can actually set the resolution using xrandr.
longbyte1 wrote:
Dynamic pathfinding - rebuild node graph or a section of it only when a critical path between two nodes has been blocked due to changes in map, or a more optimal path is found between two nodes that would suggest the creation of an extra node.
The algorithm you might want to use is called D*.
longbyte1 wrote:
Identifying structures - AI has no humanity and couldn't tell between a statue and a giant mountain except by their height gradient (slope). They also don't know what the difference is between ally bunkers and big half-made, half-griefed buildings (because by definition they are essentially the same thing).
That'll just make things more interesting. Watch as the AI completely gives literally no fucks about your intentions and starts making highly optimised structures atop your structures.

It would be a good idea to allow players to provide waypointing hints to the AI. The added bonus of such an approach is that your team can also see the waypoint. The downside is people will use it to grief by proxy. But hey, that's why we have votekick. And admins, because votekick will always fuck up at times.
longbyte1 wrote:
Flexible roles - sometimes bots die and the mission must continue with a smaller squad. In AoS, there were no classes, only changes of weapon. Thus the AI as a collective could designate a place to construct, and bots could assist each other, defending each other based on health, ammo, and number of blocks left.
This is where things get really interesting. Here's my proposal:

Bots have a special "strategy" text field that indicates what the hell the bots are actually doing. This is to inform the players what the hell the bots actually want. Bots could also place markers and paths on the map display and in world space so you know what their strategies are.

If this information is good enough, the bots could communicate entirely through this. With that said, it would also make sense to have human players utilise this. This has two advantages. Firstly, human players can use this to communicate with bots. And secondly, it can break through the language barriers that plague AoS 0.x. (They don't plague it so much in 1.x.)
longbyte1 wrote:
Finding good places to build - this is a tough problem that I don't know how to solve, because it requires analysis of the prefab to be built (purpose, resource requirements, and shape?), as well as a survey of the terrain's feasibility (how much digging is required?) and the distance between the building and the front lines (what is gained from placing it at that location?).
You could estimate how much cover you have in a place, how far away it is from other things... not sure what else off the top of my head but you can think up a few factors.
longbyte1 wrote:
I would start out by placing metadata ("botdata") manually on the map, including default pathfinding nodes, suggested locations for building prefabs, and ally/enemy zones. Later a tool could be developed to do all this for you using algorithms more advanced than I'll ever know in 5 years.
...a good excuse to add in a map marker/waypoint/path system!
longbyte1 wrote:
Priorities/weights - bots have individual objectives assigned, but sometimes levels of concern such as ammo, number alive in "squad," health, and even the status of the game objective (like intel) can cause a recalculation of objective if they seem too important that they hinder the ability to complete the current objective. Thus each objective can be defined with specific prerequisites which must be met in order to continue. I would not implement an "after X completed, go back to previous/next objective" because it would lead to a stack-based objective system spiel that would make everything so complicated and convoluted LeCom would start crying 50k lines into the code.
Code: Select all
union objective {
	enum objective_type {
		OBJECTIVE_NONE = 0,
		
		...
		
		OBJECTIVE_COUNT
	};
} objective;

#define OBJECTIVE_MAX 4096
objective *objective_list[OBJECTIVE_MAX];
int objective_sp = 0;

void objective_push(objective *ob)
{
	assert(objective_sp < OBJECTIVE_MAX);
	objective_list[objective_sp++] = ob;
}

objective *objective_pop(void)
{
	assert(objective_sp > 0);
	return objective_list[--objective_sp];
}
Was that hard? It didn't feel hard.
longbyte1 wrote:
Human-AI interaction - humans are strange and misunderstood to computers, so no
Well you have to write the code to tell the computer what to do in the first place so using a common communication method which is both computer-friendly AND human-friendly (as I vaguely proposed earlier) is not outside the scope of what is reasonable.
longbyte1 wrote:
Tunable algorithms - behavior of AI should be based on certain factors: risk (0 -> defense/turtling, 1 -> offense and high aggression with no regard for factors that may endanger the completion an objective), profile (0 -> covert and always aiming to be hidden from enemy sight, which translates into longer paths; 1 -> always barging into and through the front lines with little need for cover, which translates into the shortest path possible), accuracy (0 -> absolute idiots, 1 -> aimbot), and alteration (0 -> no changes in terrain whatsoever; if no path can be found to enemy or objective, just stick around; 1 -> dig through mountains, chop down all trees, grief everything, build giant towers; foolish but can be highly destructive).
Yay, difficulty!
longbyte1 wrote:
Formations for surprise attacks, rifle volleys, dodging grenades, and such.
This one will be fun. You could consider using boids as a basis for this.
longbyte1
Deuced Up
Posts: 336
Joined: Sun Jul 21, 2013 7:27 pm


Woohoo Vagrant finally decided to work. Now I can actually start on a master server.
LeCom


I see you're going for the complex and hardcoded AI type. My plan is to write an AI that uses machine learning. The disadvantage that an AI would need to "learn" a certain map or gamemode can be fixed by caching AI data for that and loading it next time that map or game mode is loaded. Either way, I'm going to write a game objective API so that bots will know what to do. The pathfinder itself could actually be based on machine learning, but tbh I'd prefer a proper one (and I suck at writing those)
Chameleon
Modder
Modder
Posts: 601
Joined: Thu Nov 22, 2012 6:41 pm


I'll cry (from laughter, obv...) if AI learns to crouch spam or trickshoot :'D
143 posts Page 8 of 10 First unread post
Return to “Ace of Spades 0.x Discussion”

Who is online

Users browsing this forum: No registered users and 2 guests