SpecStart v3.0

Search, find and discuss about Mutators!
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

SpecStart v3.0

Post by MrLoathsome »

Version 3.0 of this is now available.

Various code improvements + addition of "HopThru Mode*.

*In the event that I can replace "HopThru Mode" with something that will record a flight path thru a
map and then replay it later, there might be a V4.0 at some point in the future.

The Readme.txt:

Code: Select all

9:39 PM 8/25/2016

SpecStart v3.0  - by Mr.Loathsome

Mutator to enable player start in Waiting/Exploring mode.

Player(s) will start the game in an enhanced "Waiting" state.
i.e. Invisible Flying mode.

AltFire will bypass/exit the SpecStart mutator instantly at any time.

This is compatible with Console Commands Ghost/Fly/Walk/Behindview etc.
If you find a console command that breaks it, don't use that console command....

Recommend setting Behindview 1 for a better view of your own Flag/Cow/Book
if you have those options enabled.


Updates from v2.0:

1.  Misc. code optimizations.  Seems to function with more gametypes now.
2.  Now works with U1/227
3.  Added HopThru Mode.  (Beta)

Updates from v1.0:

1.  Added full Team support with options for 2 different animated Team Beacons for the Spectator location.
2.  Replaced the FlashLightBeam with an actual Flashlight Inventory item.  (Adjustable...)
3.  Fixed the bCowSpec mode so it now works when more than 1 player is on.


Install:  Place SpecStart.ini, SpecStart.int and SpecStart.u in your UT/System folder.

Usage:  Select SpecStart from the mutators list.

Servers add SpecStart.SpecStart to your servers startup line mutators section.
This does NOT need to be a ServerPackage or be on your re-direct.

-----------------------
Configuration Options:

NumFires=1 - Number of times to press primary fire before exiting Exploring mode and Joining game.
If set to 1, SpecStart will start in Spectating/Exploring mode.

If Set to 2, SpecStart will start in HopThru Mode.

In HopThru Mode, players location will cycle thru all Navigation points on the map at the rate specified
by the HopSpeed variable in the SpecStart.ini file.
Pressing fire once will drop them into the regular SpecStart Spectating mode.  Pressing fire again joins the game.

bDropIn=False - If true, player will enter the map at whatever spot they are currently spectating from.
It is a "Pick your own PlayerStart" option.

bUseInv=False - If True, players will be able to use inventory items they have while in Exploring mode

bCowSpec=False - If True, players will be riding a real live NaliCow.   The player will be invisible, but the
Cow will not.

bTFlag=False - If True an animated Flag with Team colors will be displayed as a beacon.
If the players Team is set to None (255), the flag will select a random texture each time the
player stops moving.

bTBook=False - If True a Book with animated Team colors will be displayed as a beacon.

bFlashLight=False - If True, player will have a flashlight inventory item available while Exploring.

MyLightRadius=5 - Size of the flashlight beam.  Recommended range 3-10.  Use higher numbers for huge Spotlight.

bLightOn=False - Set initial startup state of the flashlight.   If true, light is on when player starts.
If bUseInv is also true, player will be able to use flashlight and other inventory normally, if bUseInv
is false and bFlashLight=True and bLightOn=True, players will not be able to turn the light off.

bCoopStart=False - Set this True for gametypes that do not utilize the default ElapsedTime or RemainingTime variables.
i.e. CoopGames/SP Games etc.    Can also be used with practice matches or Tournament Games that require pressing fire
to start the match.  If true it should replace the default Waiting state with the SpecStart enhanced waiting state.
If False in practice or Tournament Mode games, you will have the default waiting state until fire is pressed once and
then the enhanced SpecStart mode should begin.

Access config options in file SpecStart.ini or via Advanced Options/Mutators if you have Advanced Options enabled.

Enjoy !  (Or not....)
:|
Attachments
SpecStart_v3.0.zip
SpecStart v3.0
(15.05 KiB) Downloaded 182 times
Last edited by MrLoathsome on Tue Aug 30, 2016 2:13 am, edited 4 times in total.
blarg
User avatar
Barbie
Godlike
Posts: 2784
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: SpecStart v1.0

Post by Barbie »

Code: Select all

class SSCheck expands Actor;
...
	MyMoo = Spawn(Class'BabyCow');
I wonder *where* that BabyCow will appear if no location is given. Until now I've expected that (0/0/0) is used then - but what happens if there is no subtracted area? :omfg:
<EDIT>
Ups, just found this comment in the stock code:

Code: Select all

// Defaults to spawning at the spawner's location.
//
native(278) final function actor Spawn
(
</EDIT>
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: SpecStart v1.0

Post by MrLoathsome »

In this case I was not concerned where it would initially appear, as one of the first things done is to relocate it
to wherever the players current location is.

*Edit:
Been doing more online testing overnight.
Have seen a number of cases where the Cow/Book(TeamFlag) either fail to spawn or fail to
move to the players location as it should. In the 1st case, exactly 4 accessed nones will appear
on the server console/log. (I did mention the bCowSpec option was still experimental. :? )
Think I can fix this by adding a 1 tick delay before the babycow is spawned, then another 1 tick
delay before the Book/Flag gets spawned. That is the next thing I shall try anyway.
At very least I will add sanity checks to squash those accessed none errors for cases where the
babycow/book fail to spawn/relocate correctly.

Even when this occurs, the mutator seems to handle it gracefully. The Exploring mode and other
options all continue to work.

Screwed around a bit with ways to try an eliminate the jitter that happens online when the BabyCow
and Book do spawn correctly. First thoughts were that something needed replicating.
Tried just the Location/Roatation variables first. Tried a bunch of replication type things.
At one point had everything simulated. Tried spawning the Cow/Book only on the client, like
a BioBlob etc. That didn't work at all. :ironic:

At this point I don't think it is even an issue that can be fixed by replicating any part of it.

What I need is a function that returns the players Location and Rotation values one tick before
they actually happen.
So somebody write that for me. :loool:

I blame the defective and poorly coded SetBase() function. (If it worked right, this would be WAY easier....)
This antique post I found the other day confirms my opinion on that function: viewtopic.php?f=15&t=2415&p=20190&hilit=SetBase#p20190
That is the ONLY thread on UT99 that contains the text "SetBase" in it. *Until now.

Seems like Myth had better luck with it than I did. I can't get it to work with anything on or offline, except the FlashlightBeam.
That seems to be working OK.

If nobody writes me a function that sees into the future, I may have to try tweaking things so that
the playerpawn is living/viewing in the past a tick or 3. That will either work, or break everything completely.

**Edit 2 for v2.0 code adjustments.
SetBase is no longer used by this. The optional TeamBook/TeamFlag beacons now use PHYS_Trailer as they should.
ScriptedPawns don't like PHYS_Trailer much it seems, so the optional BabyCow is still using a different method.
Last edited by MrLoathsome on Mon Jul 04, 2016 2:19 am, edited 1 time in total.
blarg
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: SpecStart v2.0

Post by MrLoathsome »

Bump. :highfive:

Despite the lack of interest, post 1 is now updated with v2.0 of this.
blarg
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: SpecStart v2.0

Post by MrLoathsome »

MrLoathsome wrote:Bump. :highfive:

Despite the lack of interest, post 1 is now updated with v2.0 of this.
Due to the continued lack of interest, v3.0 of this is now available in the first post of this thread. :confused2: 8) :mrgreen:
blarg
User avatar
papercoffee
Godlike
Posts: 10441
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: SpecStart v2.0

Post by papercoffee »

MrLoathsome wrote: Due to the continued lack of interest
It's not the lack of interest ...it's the lack of understanding.
For what kind of game mode is a SpecStart useful?
User avatar
sektor2111
Godlike
Posts: 6402
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: SpecStart v3.0

Post by sektor2111 »

It's the default behavior.
Some dude asked if exist such a mutator, and now when mutator has been created I don't see any feedback if it works or not according to that need or not. As a note, me as example I'm not spectating matches in any way...
User avatar
Dr.Flay
Godlike
Posts: 3347
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK
Contact:

Re: SpecStart v3.0

Post by Dr.Flay »

What it does is hidden in the spoiler, and should perhaps be made more obvious.

When you load a normal multi-player game you can fly around before you start (Tournament mode), but once the game starts all new players will start immediately.

With this mod, new players can float around as if the game has not started, or as if they were a spectator.
User avatar
papercoffee
Godlike
Posts: 10441
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: SpecStart v3.0

Post by papercoffee »

Dr.Flay wrote: With this mod, new players can float around as if the game has not started, or as if they were a spectator.
Yeah ...but this would only make sense in DM ...because in Team games is it easily exploitable. I say Ghosting.

:noidea
User avatar
Dr.Flay
Godlike
Posts: 3347
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK
Contact:

Re: SpecStart v3.0

Post by Dr.Flay »

You can already enter as a spectator to check things out, and then play at a point you think is good.
XConsole also lets you hop between playing or spectating.

As long as the player is forced to spawn in the place they were destined to, then they still have to get pickups and travel to where the action was, which by now has changed.
At best you will gain a few seconds, on a thing you can already do without complaints (or the admin will have blocked spectating).
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: SpecStart v3.0

Post by MrLoathsome »

All those options are configurable by the server admin via the ini file.

The hop-thru mode can be interesting, as you can find out all the weird places the mapper may have put navigation points etc.
Found hidden rooms with it on maps I have played 100's of times. (I never use Ghost for that, not sure why..)

Made the Readme.txt info in the first post a Code tag rather than Spoiler.
blarg
Marscaleb
Average
Posts: 48
Joined: Tue Jun 07, 2016 6:50 am

Re: SpecStart v3.0

Post by Marscaleb »

Wow! I set aside time this month so I could build this mod, but I had no idea that someone tried to actually build it already!
I'm very pleased about that!

I've been spending this week setting up some extra computers so I could test it though, and unfortunately I found that it fails to address the single most-critical element that I was looking for.
When a player is in the spectator mode, they still occupy a spot in the roster, and thus there are still fewer players in the map if that particular player is not actually playing.

What I wanted a mod like this for was for a local convention. I have several computers sitting together all networked together, and people are joining the game as they please, just sitting down in front of a station and joining the game. One match could have just two people in the game, one match could have eight. I was looking for an easy way to fill in bots for the roster when people leave and we have fewer people in the game. So if after one match a bunch of players leave and we are left with just two or three players, we don't have only two people in some big map designed for 8 - 12 people.
(This would be critical if we wanted to run a CTF game, which is why I have been sticking to DM.)

But this mod DOES address all of the other points I had brought up, and I'm pleased about that.
It doesn't hold the game momentarily as it re-connects to the server, and players are dropped to the "spectator" mode at the start of a match. Between those two facets this mod looks like just what I wanted! If someone gets up and leaves after a game, there isn't some idle player standing in the map; the game is just waiting for someone to sit down in front of the computer. Plus it doesn't really bog down the game if someone stays at their computer, they just need to hit the fire key and instantly they are back in the action! Well that sequence looks a little out-of-place because you still see a spawn effect and whatnot, so (especially if you are used to the game already) it looks like you joined the game normally when in fact you still need to fire to spawn. But that's something I could live with.

The only problem I see with this mod is, as I mentioned, when the player is still a "spectator" they are occupying a slot on the roster and preventing a bot from being in the game.
Oh, also I think it would greatly improve the mod if there was a message always displayed on the screen when they are a spectator, like "Press [fire] to join!" Maybe it could be a message set up in the ini file, and if it is left blank then no message is displayed? Just a thought.
And I just thought of a third improvement, and that would be to drop the player back into spectator mode if they are dead for too long; just in case someone gets up and leaves in the middle of the match. But that's easily the least-important change I could suggest.

But back to the roster thing. Is this something that can be done in your mod? Or is this something that is intrinsically connected to the nature of being in the game versus being a "true spectator"?
...I suppose that if it is intrinsically connected to the nature of being in the match, a workaround could be devised where the mod forces an additional bot into the match, and then removes that same bot if the player joins. (As long as it doesn't cause problems with the "autofill" mod I will also be using.) That way there are still bots in the match if people aren't playing. Hmm, it might be better to wait a couple seconds after the match starts before spawning them, just to avoid a lot of extra bots suddenly coming and going at the start of the match, since its going to take a couple moments before people actually join.
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: SpecStart v3.0

Post by MrLoathsome »

Greetings.

Sadly, I am pretty sure there is no really good or easy way to address your primary concern there.
Been a year since I looked at this thing, but I do remember looking at issue that a bit.

The default spectator class was totally worthless for this application, so this mutator just does things
to PlayerPawn.

Only suggestion I might have is just to increase the number of playerslots on the server and add more bots...

I tried to write the thing so that it could work with almost any gametype. You can configure if the player starts playing at
the current spot they are spectating at, or if it will send them back to the initial spawnpoint when they elect to join the match.

If you look close at the readme file there, you can set a number of options for how this behaves.
It does work with every gametype I tested it with, including Unreal and 227.

*Edit. You might look at the Teambot mutator, or something similar.
Maybe you can tweak the various config files to get things working the way you like.
Or, just write some mutator to control the adding of bots so it works with SpecStart the way you would like.

Just took a glance back at the included source code, and am thinking that the only way to really get the thing to do EXACTLY what
you would like, would require custom gametypes. It would be a considerable task.
blarg
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: SpecStart v3.0

Post by [rev]rato.skt »

Nice job guy i go add in my server :)
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
Post Reply