Wirehead Studios

Wirehead Modifications => Generations Arena => Topic started by: ~Va^^pyrA~ on 2017-03-03, 01:17

Title: Entity Plus (or, Resurgence: Resurgence)
Post by: ~Va^^pyrA~ on 2017-03-03, 01:17

Maybe I'm a few years late to the party, but I don't think I've come across this mod before. I seem to recall the original idea for Generation Arena's "Resurgence" game mode being more akin to the old "Hunt" mod. That is where the new Arena Gladiator's BFG comes from, after all. The "Entity Plus" mod looks to take that to the next level, with enemy patrols and zones, triggered doors and events, usable items (like keys), opening cinematics and voice overs, end level stats, Q2-like mission prompts, etc.

There doesn't appear to be a lot in the way of maps for the mod, but the idea is astounding. Even the two demonstration videos are pretty impressive for what it is. Without yet having played it myself, the only thing that looks off is the enemy behavior. It's clearly using the Q3A bot AI, which seems to result in a lot of sporadic and outright aggressive movements that work fine in the arena, but maybe not so well in a more linear room-by-room style. As I recall, the Hunt mod did a decent job of having different behavior (and sizes!) for the enemy types.

I know it's a looong way off, well after the inevitable 1.0 release even, but Resurgence as an idea always held so much potential. It's hard not to feel a rekindling of excitement when seeing something so similar being implemented elsewhere. :doom_love:

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: Phoenix on 2017-03-03, 02:49
I'm familiar with EntityPlus's existence, though I've not actually played it.  I made a code donation a while back in the form of a shrink ray that I had coded on the side.  I'm not sure if anything was ever done with it.

I do have the Hunt mod source code still, and Resurgence is not forgotten either.  After 1.0 is completed I do intend to see if it's feasible to integrate that into Gen or not.  Got to make everything else work first!

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: Gnam on 2017-06-13, 06:00
Yeah I ran into Entity Plus just recently and found it intriguing. Overall it looks to make it much easier for mappers to build singleplayer campaigns without having to do a ton of side programming themselves.

That being said, I really hope the configurability of it improves in the future. For example, right now the mod scales enemy damage and health up and down as the difficulty level is changed. Ideally the person creating the campaign would want to have control over those values, but currently the mapper has no control over how difficulty settings change their monsters.

It would also be nice to be able control what weapons the player starts with on your level, tweak weapon stats, and implement custom weapons if you have the assets ready.

It also currently doesn't support co-op as far as I can tell, which would be really nice to have.

Still, it's a really promising project.

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: DescX on 2017-10-10, 16:10
Hey folks! I'm a modder from ages ago. My project is gearing up to replace Entity Plus in most ways. While I'm writing code primarily to support myself, I'd be ecstatic if others could benefit from it!

Just got in touch with Phoenix not long ago, started cruising the boards today and this thread caught my eye. I don't mean to hijack the thread, and re-reading my post it does sound like an advertisement, but that wasn't my intent when I started writing it. Sorry =\. The community is so fractured now I'm not sure of the best place to post anything. So... hopefully this finds you all well :).

I've got no plans for a full scale single player experience, but I've yet to see anyone taking the approach I'm following. EP is the closest one, but the mod suffers from the same willy-nilly parser/language problems most Q3 mods suffer from, and their scope is definitely more limited. I've introduced JSON definitions that are built around WYSIWYG feature toggles for everything VQ3 and beyond, with everything implemented as generically as possible (attached: samples, covers roughly 25% of features implemented so far).

Currently, two big barriers to sharing, possibly complete deal breakers:

1) Massively alters VQ3 code. VMs are gone as I'm compiling C++11/14. Pure PK3s are getting replaced with on-disk hash checks. ~10kloc of original id source has been outright deleted and replaced with functions that have a wider responsibility. I might switch to using the XREAL renderer if I can find a way to avoid having to make specialized maps. And on, and on...

2) I won't have code to download for another month or two. It's an #ifdef mess right now, and I'm not putting out the whole shebang until I have clean-ish nightly builds for at least *nix and Windows.

Currently working stuff:
- define an arbitrary number of player classes/weapons/items
- reloads everything important on the next full map load; massively speeds up development
- allows for a model's shaders to be replaced at runtime on a per-surface basis
- uses AngelScript in select places (currently just player abilities)
- physics additions like "realistic stair stepping", ledge climbing, wall kicks, QW air control, etc
- TTF fonts everywhere; monospace not required

Considering it's only taken about two weeks of effort to get this much done, motivation is high, and I fully expect to complete this beast, hopefully before the new year. I've still got these big ticket features on the radar:
- custom entity placement per map
- scriptable entity triggers via AngelScript
- game modes running via AngelScript
- arbitrary number of teams
- sound shaders
- total replacement of q3_ui, TA ui, and HUDs via AngelScript
- loading multiple BSPs into the same worldspace

I love Generations - it inspired me to make a few class based mods years ago. But I never went about implementation the "right way", i.e. generically, so this mod is an attempt to come full circle :). I plan to bring in classes from my previous mods, as well as ones heavily inspired (but unique enough to pass the IP test) from Quake, Unreal, Painkiller, Tribes, Descent, StarCraft, Doom, Duke, and pretty much any other game I've fancied. Most important, the systems I leave behind should be fully moddable by amateurs, skipping the need for compiled code completely.

If any of this sounds useful, drop me a note and I'll share whatever I can :). Some stuff like the physics additions can be copy/pasted, but the definition files are a complete system that wipe out huge parts of VQ3... so if there's interest in the bigger ticket items, I'd probably have to share principles rather than C files :).

Looking forward to Generations 1.0! :) Keep up the good work and stick with it. Should be freakin' awesome!

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: Angst on 2017-10-13, 18:53
Oh Shazbot, I may need to keep an eye on this.

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: DescX on 2017-10-29, 00:43
Ahoy! Just two days after my post I hit showstopper problems with the boundaries between AngelScript/C/C++.

I had to take a big step back to refactor tonnes of stuff. Just got the engine drawing again. Attached: progress continues.

1) All of Quake3 now compiles as C++, and exceptions handle engine teardown. I can now wantonly include libraries without fear of them silently degrading & destroying the application over time. This opens up a huge number of possibilities... but I wish I could get back the week of life this exercise stole from me ;).

2) AngelScript everywhere: way bigger scope than I expected to achieve. It's already fully replaced q3_ui, with the basics working (text, images, input, key handling, click/hover callbacks). For cgame/game, the EV_* event pumping loops are the main entry point for scripts.

Making everything compile properly was a hell of a departure, but a source release in December still seems feasible. With any luck, I'll be back on track with writing actual features by the start of the week. I've had placeholders to override gentity_t::think screaming at me for a couple weeks and this cleanup business is getting boring :)...

Hope all's well! More as it happens.

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: Phoenix on 2017-10-29, 03:27
That's an impressive feat.  I'm definitely looking forward to seeing where you go with this.

I am curious over one thing.  If you've ditched the .qvm functionality, have you considered the implications for cross-platform compiling?  That was the main pro for the .qvm's is their portability and keeping the game source separate from the engine.

Title: Re: Entity Plus (or, Resurgence: Resurgence)
Post by: DescX on 2017-10-30, 19:38
Definitely thinking about cross-platform here. AngelScript uses JIT, and has wide support for calling conventions on many platforms, all of which it wraps nicely into a black box.

It's unlikely that I'll have time/inclination to build and maintain project files. So while the sky might be the limit, I'm only building for Win x86 right now, with plans for x86/x64 Linux and Windows. I don't care enough about OSX to build for it to be quite honest, but an Android ARM option might show up assuming the Linux build isn't painful to get working.

Everything I'm using is standard c99/cpp and known to compile on many platforms without hidden OS dependencies. AngelScript supports x86, x64, MIPS, ARM, Xenon, and PPC out of the box. Other stuff I've added includes stl (C++14 level at most), freetype2 (making it required now), nlohmann JSON (header only), and my home-grown bits. I'm considering POCO and ICU for some features, but that's it for big frameworks. Certainly no boost.

And just one update: the hunk allocation strategy supplied in the ioquake3/id base blew up in my face yesterday. I'm roughly 50% of the way through moving to using a shared_ptr factory in place of malloc. Crazy? Yes. Wish me luck...