this post was submitted on 21 Jun 2024
55 points (100.0% liked)

Games

39905 readers
1859 users here now

Welcome to the largest gaming community on Lemmy! Discussion for all kinds of games. Video games, tabletop games, card games etc.

Rules

1. Submissions have to be related to games

Video games, tabletop, or otherwise. Posts not related to games will be deleted.

This community is focused on games, of all kinds. Any news item or discussion should be related to gaming in some way.

2. No bigotry or harassment, be civil

No bigotry, hardline stance. Try not to get too heated when entering into a discussion or debate.

We are here to talk and discuss about one of our passions, not fight or be exposed to hate. Posts or responses that are hateful will be deleted to keep the atmosphere good. If repeatedly violated, not only will the comment be deleted but a ban will be handed out as well. We judge each case individually.

3. No excessive self-promotion

Try to keep it to 10% self-promotion / 90% other stuff in your post history.

This is to prevent people from posting for the sole purpose of promoting their own website or social media account.

4. Stay on-topic; no memes, funny videos, giveaways, reposts, or low-effort posts

This community is mostly for discussion and news. Remember to search for the thing you're submitting before posting to see if it's already been posted.

We want to keep the quality of posts high. Therefore, memes, funny videos, low-effort posts and reposts are not allowed. We prohibit giveaways because we cannot be sure that the person holding the giveaway will actually do what they promise.

5. Mark Spoilers and NSFW

Make sure to mark your stuff or it may be removed.

No one wants to be spoiled. Therefore, always mark spoilers. Similarly mark NSFW, in case anyone is browsing in a public space or at work.

6. No linking to piracy

Don't share it here, there are other places to find it. Discussion of piracy is fine.

We don't want us moderators or the admins of lemmy.world to get in trouble for linking to piracy. Therefore, any link to piracy will be removed. Discussion of it is of course allowed.

Authorized Regular Threads

Related communities

PM a mod to add your own

Video games

Generic

Help and suggestions

By platform

By type

By games

Language specific

founded 2 years ago
MODERATORS
 

cross-posted from: https://lemmy.mods4ever.com/post/301

Download from here: https://Mods4Ever.com/

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago (3 children)

What is it about Deus Ex that allows that type of mod to exist?

[–] [email protected] 7 points 1 year ago

Technical perspective first...

This is Unreal Engine 1, which used UnrealScript programming language. It was extremely flexible, and you can extract the original UnrealScript code (including comments) from the game. This means it's nearly an open source game, except for the native code. But pretty much everything is controlled by the UnrealScript anyways. Including the GUIs, HUDs, conversations, most of the AI stuff, damage calculations, keyboard key bindings, etc.

On top of this, Deus Ex released their SDK tools (I think in 2001, around the time of the multiplayer patch). Which is their version of the UnrealEd map editor, conversation file editor, and UnrealScript compiler/extractor.

[–] [email protected] 5 points 1 year ago

Gameplay perspective...

This game is really open, there are many approaches to every situation. Which means when things get randomized, it tips the scales of balance and you have to reconsider every option for every seed.

Even just choosing a melee weapon, you're thinking about knife vs baton vs crowbar vs sword vs eventually the dragon's tooth sword. On some seeds the knife does a bit extra damage and then you gotta think if it's better than the baton and crowbar because of its speed, and it only uses a single inventory space. On some seeds you might get a weak and slow dragon's tooth sword and it might not even be worth keeping!

And then you've got all the different paths through the levels, and you'll be rethinking routes based on random start locations, random goal locations, or random enemies in different spots, or items or medical bots. Or maybe a door was randomized to need more lockpicks and your lockpicking skill is worse than vanilla, maybe you need another way around or you choose to find the key to save lockpicks for later. You won't be doing the same thing every playthrough like vanilla where eventually you figure out which approaches you like best for each spot. The randomizer gets you to rethink it all and adapt.

The ability to do anything also means you can always progress, you don't get stuck just because you're missing a password or low on multitools, there's always another way. The randomizer really forces you to adapt.

I think any game with good replayability is a good target for a randomizer, it just amplifies that replayability.

[–] [email protected] 2 points 1 year ago (1 children)

are you asking from a technical perspective or a gameplay perspective?

[–] [email protected] 3 points 1 year ago (1 children)

Thanks for your responses. Pretty incredible that its capable of being so flexible and still be a coherent game. The community behind it must be amazingly passionate about it.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

Thanks! Yea everything shown in that trailer is in UnrealScript aside from the creation of the mirrored map files, and the installer obviously, both of those were done in Python. The death markers and other online features (which are all optional and opt-in, disabled by default) use a TCP connection in the game written in UnrealScript to make HTTP requests, the backend is a Python Flask server. We even wrote our own JSON parser inside of UnrealScript (it's not perfect but it does enough for us). Technically it's possible to add a DLL module to the game for stuff like JSON parsing but we haven't needed to, and technically this keeps it more easily portable (like if SurrealEngine even gets to a more completed state).

We had to write our own PRNG function to work inside UnrealScript, because the provided one doesn't allow seeding.