Author Topic: Modding: Its limitations, what is abusable, and why I hate the launcher  (Read 9360 times)

Let's get this out of the way first:
tl;dr: Get out. If you cannot be bothered to read it, have fun with your apathy but go somewhere else.

So I've been having a discussion with Jimmg, Fob and now Marcem about modding as it stands now for Blockland. I see it as horribly limited in a number of ways, and Badspot's never been particularly intent on fixing this, but Fob did remind me of when Warground and Stulle were talking about the 128k brick limit and after Stulle posted about it and the community got together about it, that did get changed, so hey, let's give this stuff a try.


What is abusable?

EVERYTHING. Anything useful can be abused. Nothing is "just good", and locking features that are "abusable" is stupid - because they will always have legitimate uses aside from the abusable ones. Locking out starfish skiddies also locks out legitimate people who want to make nice things for people to play with.

So in the past, Azerath and Truce made some scripts to impersonate other players. It changed their player's appearance to the target player, and their shapename. Because the shapename basically identifies you as a player, normal people couldn't really tell the difference. This is a particularly extreme example (actually it's only one of two, but it is the worse example) - after this happened, the ability to set shapenames on players or even AIplayers and the ability to even create an AIconnection with a static name - all removed, to prevent people impersonating other players.

But was this really a problem? This was an administrator on the server being able to abuse some feature to annoy someone else - not any player on any server. This would effect you on a server that was actually running this abusable script. ONE SERVER. When did "if the server's bad, don't play on it" stop being applicable? As I see, people still say it all the time. Moreover, by the logic that this removal was justified by, you shouldn't be able to kick or ban either, because what if the player doesn't deserve it? That's abuse! Quick, remove administrative functions! Oh, but they have legitimate uses, you say?

The removal of this feature also prevented us from, say, creating bots that mimic the actions of players and look like other players in the game. Not necessarily impersonating someone, but simply a bot who is capably the same as a player. Or an NPC in some gay RPG looking like an actual normal player entity, which allows you to feel that you're actually part of the world rather than being explicitly different, or a monster being identifiable by a name or showing health above its head.


The second example is player tracking. This is more abusable - allowing any client to track any player they have ghosted - since it allows a client to have an aimbot and thus ruin others experience on any deathmatch server they're on (though they're not explicitly unkillable). However, the locking of this feature also prevents the compass mod from tracking players the server tells it to - like your teammates or players you have line of sight to - so coordination via an in-game radar isn't possible, thus making team games kind of suck since you've gotta rely on an agreed upon plan that might forget up any moment, or typing to coordinate, or these people being people you're comfortable with voicechatting with via an external client. I can sort of understand this one being shut down since it does actually allow a player to cheat on any server, but a complete lockout is a stuff way of doing it.


In both of these cases, it's mostly modders being gimped. There were better solutions - like automatically adding a tag to one shapename if another shapename of the same exists, or locking down player positions clientside until the server tells you that ghost object is allowed to be tracked via a clientcmd - but ultimately modders lost access to both of these things for them being "potentially abusable" and then being abused by a few bad eggs. Sure, 'smart' locking them is more work - but I wouldn't think it would be a great deal more.



The limitations

Modding Blockland has a lot of limitations. They're mostly pretty minor individually, and I certainly couldn't list them all - they're things you run into that prevent you from doing something when you actually try, which is frustrating. They're not things you expect. Some are issues with the engine, and I accept that there are legitimate technical reasons these cannot feasibly be fixed. Some are simply issues with things Badspot's added in, however. Sure, I'm grateful that the things that are there, are there - but if you do not criticize nothing will improve. "I love breathing, but I'd also really like to eat."

To actually give examples, a few things I've found that I can't do, that would probably be reasonably simple fixes:

  • You cannot raycast on the client. This stopped me from adding clientside replication of the agile player's movement, allowing players with higher ping to use it - as the client knows nothing about how to move with the agile player code, you will be jerking all over the place as the server  bombards you with "no that's the wrong position". I'm not exactly talking about 2000 ping here - 100+ makes it difficult and 200+ is practically impossible since every fifth of a second you go back in time. And I average 300 ping to most servers due to living in Australia - I can't even play with my own mod. Not like it was ever really popular though, since it didn't shoot bullets.

  • You cannot push the events dialog to a client. This I could fix with a mod - but then there's the issue of people not having that mod, so it's broken for them. Incompatibility sucks. Additionally, the events system is, on the back end, built to support classes other than bricks. You can add input events to any class, but the events dialog is as far as I can see hardcoded to use bricks, and there's no way to open it aside from via the wrench dialog. What about objects you can't hit with a wrench or that aren't bricks? What about eventing minigames to make them interactive?

    And don't say "Oh but we have minigame events" - we have brick events that minigames call on bricks. It's not the same thing. It's a hack workaround. If you could event a minigame directly - or any other object - you could build an interactive system of actual components, allowing eventing to become more than just a toy and actually become a powerful system for creating content, open to ordinary players.

    I'd also love to see input lists filtered by datablock properties, but that would probably actually be a fair bit of work. (I'm talking about being able to set an 'isJVS' property on JVS bricks and only have the content events show for those bricks, since no other brick can use them. Would make the lists much tidier.)

  • With the player persistence script you can't unregister saving of player positions or tools. These are saved and loaded directly in the functions, with no regard for the list. What if your mod wants to use persistence, but you don't want to restore player positions? What if you want to save player score for your deathmatch, but you don't want them to spawn where they left? Well, you're just going to have to package over the spawn and deliberately push them back to a normal spawn point. Or edit the script - but that is just ignoring the benefit of having a default, always-available interface for this.

That brings me to the third point:



Why I hate the launcher

While I completely respect Badspot's right to update his game whenever he likes, and believe the launcher is a good gateway to this, I cannot stress enough how much I hate its implementation. It always overrides every base file - even if they haven't been changed. Even if it's a configuration file packaged by default that's missing - like if you want to have nothing in your brick defaults. This wastes time (the launcher takes a good five to six seconds to finish running and open the game - and if I want Blockland pinned to my taskbar I have the game open as another icon which is annoying) and actually inconveniences you, the end user. But how, you ask? A number of files are perfectly safe to modify. Like brick textures, GUI bitmaps and the like. In fact, a lot of people dislike the default brick textures. And sure, we have a hack workaround. But I don't see why people who don't break their game should have to be treated as idiots. So once again, an issue is met with a blunt, simple solution - it works but it could work a lot better with a bit of polish.

Moreover, the launcher was made to facilitate more common pushing of smaller updates. And what did that achieve? A pumpkin brick. Teledoors. Small mods that anyone else could have made, rather than actual game changes that are not exactly a responsibility but are Badspot's essential sole domain. Small mods to make common players happy. And that's fine! I like the pumpkin. I have some back-of-the-mind issue with Teledoors, but I can't remember what it is so it's nothing. There's no big glaring issue with these little fun things - but the actual promise made when the launcher was created is still sitting there, touched on but ultimately unfulfilled. Little fixes to the game to make the people who are vocally dissatisfied calm down shouldn't be a big issue with the launcher - and while I am writing a lot, I'm not asking for much. I'd be happy with at least an explanation of why these things are apparently totally loving impossible. Well, I'd be less annoyed, anyway.



And that, ladies and gentlemen, is the story of how my experience with Blockland ultimately turned me into a bitter man. I love the game. I've never been able to quit, and I've tried many a time. Blockland is where I learned about coding. It's where I've drawn inspiration from, and where I've come to make things. It's my goddamn comfort zone, and while a lot of people have been around longer than me, I've got a bunch of good memories from this game. And I'd really loving love to see it become more popular. GMod's probably sold more copies than Blockland to people who only want to play TTT, and I'd love to see that kind of opportunity come up for us here. More than that, opening more doors for intelligent people might get more intelligent people in, and enhance the overall quality of the community. Or it could make more money. However you want to look at it, it's not gonna be a huge amount of work in the short term and there's really no way it can make things worse.

If nothing else, I want to actually get a serious response from Badspot about this, rather than some dismissive piece of stuff half-answer. I want to at the very least know why my views are invalid if they're going to be treated as such.

Nothing you've complained about cannot be worked around. Yes, client-side limitations suck, but aimbotters suck more.

The launcher is a non-problem. Badspot will eventually create a mechanism to replace default textures in 3 years or so.

we need:
moving platform collision support (like almost every other game)
setAimLocation serversided
BOAT AND HELICOPTER support
lock limits on playertype rotation (turrets that can only turn 180 degrees)
less stupid datablock system and allow for more dynamic updating (changing speed of a player on the spot)

Badspot wont do anything for anybody that doesn't immediately increase the game's glamour to 10 year olds. You're wasting your breath, both of you.

Badspot wont do anything for anybody that doesn't immediately increase the game's glamour to 10 year olds. You're wasting your breath, both of you.
Like you know what Badspot does, you never know.

Like you know what Badspot does, you never know.
I've been here for half a decade. I cannot remember a single instance of Badspot accommodating any add-on, besides JVS Doors[citation needed] and Return to Blockland.

I had been asking for years for malleable attributes to the Sky and Sun that doesn't involve deleting and recreating them.

He doesn't care, he never has, he never will. Every add-on that this community makes is below him, not even worth the time it takes to stoop down and stuff on it.

I've been here for half a decade.
Over many accounts, Iban :cookieMonster:



He's Iban?
I was just about to- DAMMIT NOT AGAIN HELLSPOT

Iban o:

Anyways, to pitch in, I have a question. Why is max muzzlevelocity 200? And a suggestion: custom shaders for v21 so I can make an acid trip simulator with legos.

Anyways, to pitch in, I have a question. Why is max muzzlevelocity 200?
That's the engine's speed limit, someone decided that objects can't jump more than 12.5 bricks in a tick.

I agree with you that a lot of things can be smart fixed.

I was really disappointed that aimbots ruined the chance of a server&client-side radar mod, especially because there can just be some permission asking added in.

I've been having a discussion with Jimmg

mm hmm. funny how you were on the topic of abuse on blockland.

That's the engine's speed limit, someone decided that objects can't jump more than 12.5 bricks in a tick.
In some modification discussion topic people were talking about a script you can add to stuff that will ramp up the speed of projectiles past 200.