GusPackII [Beta 7]

Discussions about GameTypes

GusPackII [Beta 7]

Postby Gustavo6046 » Wed Jul 12, 2017 7:56 pm

GusPack II: The Pack of Gus
(c)2017 Gustavo6046. Licensed as MIT.

Status: Unstable

1) What is GusPackII?

GusPackII is a compilation of many things I have done from late 2016
to date. This means some mutators, the Auto Rockets, Mush Match
(my biggest project so far), and many other small things, the latter
of which most are only accessible from modders and UnrealEd users. :)

2) How do I use it?
Play with the mutators and learn! Auto Rockets and Attach Rockets are
fun ones. Auto Rockets seek your enemies while Attach Rockets do the
same, but in a dumber way, although they do stay in a place until
there is an enemy in sight. Whoa!

3) What is Mush Match?

MushMatch is a gametype I have been doing (and quite unstable, but
I'm working on fixing that) that combines detectiveness, craziness
and fun! All by some lines vaguely defined by a browser game.

(a) If you are a human, you use your detective skills to find and
kill mushes, which usually kill people you know (or know only once
they're dead) are humans, and strap Beacons on those if you think
they are suspectable AND strong enough they'd require team effort.

(b) If you are a mush, you can infect humans into mushes using the
Sporifier, and must be stealthy and avoid beacon projectiles they
might fire at you. Or you can get dead quickly on a gametype where
mushes are only a third of the players.

And of course, Mush with it's trademarks
and other related stuff are copyright (C)2012 MotionTwin/Twinoid.
Their current license applies.

3) Where do I get GusPack II?

Download!
I can't also find any dependencies, but if you find one, please warn
me and I'll hotfix it ASAP.

Please note, though, that updates are in real-time and there
are currently no changelogs. Good luck.

4) (bonus) Where did the MushMatch thread go?
It's this one! I just changed it so that I didn't need to post another
thread. MushMatch was already distributed as GusPackII anyways
:D

5) Does this thing even have a trailer, out of curiosity?
Nope, but soon it might get one. I'm planning it now :D
Last edited by Gustavo6046 on Thu Jul 20, 2017 12:50 am, edited 17 times in total.
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: MushMatch for GusPackII

Postby EvilGrins » Thu Jul 13, 2017 2:11 am

When it says "the humans" or "the mushes" are those references for teams?

Because it looks like standard Deathmatch and not Team Deathmatch.
http://unreal-games.livejournal.com/
Image
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
User avatar
EvilGrins
Godlike
 
Posts: 5609
Joined: Thu Jun 30, 2011 8:12 pm
Location: Palo Alto, CA
Personal rank: God of Fudge

Re: MushMatch for GusPackII

Postby sektor2111 » Thu Jul 13, 2017 6:07 am

Gustavo6046 wrote:By the way, this works on any map with player starts.
:what: By curiosity give me an example of a game-type working in maps with no PlayerStart type actors.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2839
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: MushMatch for GusPackII

Postby Gustavo6046 » Thu Jul 13, 2017 7:40 pm

I meant maps of any gametype :P
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: MushMatch for GusPackII

Postby Gustavo6046 » Fri Jul 14, 2017 9:09 pm

Bump, and TL;DR: download link and an error
So, during testing I got an error, which I couldn't figure out why it happened. But other than that the gametype seemed fine, so I'd like to post the download link.
The error:
Image
EDIT: This error happens on any maps, and with most, if not all, kinds of Actors. Although it's most commonly associated to SpottedMush or NotMush. :P
EDIT 2: More examples:
Image
Image
(more coming soon as crashes are detected)
Last edited by Gustavo6046 on Sat Jul 15, 2017 1:51 pm, edited 2 times in total.
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: MushMatch for GusPackII [BETA 1 RELEASED]

Postby OjitroC » Fri Jul 14, 2017 11:25 pm

If, despite the error, someone wants to play a MushMatch, you'll need to explain what this is and how it is played - in a readme, for example.
User avatar
OjitroC
Masterful
 
Posts: 558
Joined: Sat Sep 12, 2015 8:46 pm

Re: MushMatch for GusPackII [BETA 1 RELEASED]

Postby Gustavo6046 » Fri Jul 14, 2017 11:43 pm

OjitroC wrote:If, despite the error, someone wants to play a MushMatch, you'll need to explain what this is and how it is played - in a readme, for example.


Oh yes, sorry, I forgot about that... :P

a) If you are a human, you use your detective skills to find and kill mushes, which usually kill people you know (or know only once they're dead) are humans, and strap Beacons on those if you think they are suspectable AND strong enough they'd require team effort.
b) If you are a mush, you can infect humans into mushes using the Sporifier, and must be stealthy and avoid beacon projectiles they might fire at you. Or you can get dead quickly on a gametype where mushes are only a third of the players.

EDIT: I just added a readme file to the zip.
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: MushMatch for GusPackII [BETA 1 RELEASED]

Postby Gustavo6046 » Sat Jul 15, 2017 4:00 pm

Beautiful. I just compiled and uploaded (via a batch file that uses 7zip) a VERY BAD error.
Image
which I found out does not happen if I comment out the body of
Code: Select all
function bool HasHate(Pawn InstigatedBy, Pawn Other, optional bool bForwardOnly)
{
   local bool b;

   if ( !bForwardOnly && self != FirstHate )
   {
      Log(self@FirstHate@bForwardOnly);
   
      return FirstHate.HasHate(InstigatedBy, Other, true);
   }
      
   else
   {
      if ( InstigatedBy == self.Owner && Hater == Other )
      {
         Log("a"@self);
         b = true;
      }
         
      else if ( self.NextHate != None )
      {
         Log("b"@self@NextHate);
         b = self.NextHate.HasHate(InstigatedBy, Other, true);
      }
         
      else
      {
         Log("c"@self);
         b = false;
      }
   }
   
   Log(b);
   
   return b;
}

and just return False.

Dang.

EDIT: I found out that AssessBotAttitude is called lots of times, which probably means it multiplies the HasHate call stack 'till a limit is reached.
Code: Select all
simulated function byte AssessBotAttitude(Bot aBot, Pawn Other)
{
   local Pawn P;

   if ( Other.PlayerReplicationInfo == none )
      return 2;
      
   if ( aBot.PlayerReplicationInfo.Team == 0 )
   {
      if (
         Other.bIsPlayer
         && Other.FindInventoryType(class'GusPackII.NotMush') == None
         &&
         (
            (
               Other.PlayerReplicationInfo != none
               && Other.PlayerReplicationInfo.Team == 1
               && Other.FindInventoryType(class'GusPackII.SpottedMush') != none
            )
            ||
            (
               Hates != None
               && Hates.HasHate(Other, aBot)
            )
            ||
            (
               Beacons != None
               && Beacons.CheckBeacon(Other)
               && Beacons.FindBeacon(Other).Instigator.FindInventoryType(class'GusPackII.SpottedMush') == None
            )
         )
      )
         return 1;
      
      if ( FRand() < 0.3 )
         return 3;
      
      return 2;
   }
   
   if ( aBot.PlayerReplicationInfo.Team == 1 )
   {
      if ( Other.PlayerReplicationInfo.Team == 0 )
      {
         if ( aBot.FindInventoryType(class'GusPackII.SpottedMush') != None )
            return 1;
      
         if ( Other.CanSee(aBot) )
            return 2;
      
         for ( P = Level.PawnList; P != None; P = P.NextPawn )
            if ( P.bIsPlayer && P.PlayerReplicationInfo != None && P.PlayerReplicationInfo.Team == 0 && P.LineOfSightTo(aBot) && P != Other )
               return 2;
      
         else
         {
            if ( Other.MoveTarget != None && VSize(Other.Location - Other.MoveTarget.Location) > 512 && aBot.FindInventoryType(class'GusPackII.Sporifier') != None )
               aBot.Weapon = Weapon(aBot.FindInventoryType(class'GusPackII.Sporifier'));
         
            return 1;
         }
      }
         
      return 3;
   }
}


It still crashes after this change:
Code: Select all
function bool HasHate(Pawn InstigatedBy, Pawn Other) // no longer begin from FirstHate if not FirstHate
{
   local bool b; // for debugging purposes...

   if ( InstigatedBy == self.Owner && Hater == Other )
   {
      // Log("a"@self);
      b = true;
   }
      
   else if ( self.NextHate != None )
   {
      // Log("b"@self@NextHate);
      b = self.NextHate.HasHate(InstigatedBy, Other);
   }
      
   else
   {
      // Log("c"@self);
      b = false;
   }
   
   // Log(b);
   
   return b;
}


This is an emergency. I must upload an working version before everyone else downloads the mod! :oops:

I wonder if this crash is of a different kind.
Image

Other than the fact it's seemingly not a collision crash :P

EDIT 2: It seems to be fixed, other than it does not recurse infinitely it seems, but rather recurse A TRUCK TON. Did you know even if I don't log those:
Image
my game is still VERY slow?

Code: Select all
function bool RecurseHas(Pawn InstigatedBy, Pawn Other)
{
   Log(self@NextHate@InstigatedBy@Other);

   if ( Other == Hater && InstigatedBy == Owner )
      return true;
   
   if ( NextHate != None )
      return NextHate.RecurseHas(InstigatedBy, Other);
      
   return false;
}

function bool HasHate(Pawn InstigatedBy, Pawn Other)
{
   return FirstHate.RecurseHas(InstigatedBy, Other);
}


EDIT 3: I'm starting to think the error is NOT on that very function.
Whole code of the HateList actor:
Code: Select all
class HateList extends Info;

var HateList NextHate, FirstHate;
var Pawn Hater;

simulated function Delete()
{
   local HateList h;

   for ( h = FirstHate; h != None; h = h.NextHate )
      if ( h.NextHate == self )
         h.NextHate = NextHate;
   
   Destroy();
}

function int ListSize(optional bool bForwardOnly)
{
   if ( !bForwardOnly && self != FirstHate )
      return FirstHate.ListSize(true);

   if ( NextHate == None )
      return 1;
      
   else
      return NextHate.ListSize() + 1;
}

simulated function HateList AddHate(Pawn Other, Pawn InstigatedBy)
{
   if ( Hater == Other && Pawn(Owner) == InstigatedBy )
   {
      // Log("#3#"$self@O($Other$") I("$InstigatedBy$")");
   
      return self;
   }

   if ( NextHate != None )
   {
      Log(self@--@ListHead());
   
      return NextHate.AddHate(Other, InstigatedBy);
   }
      
   self.NextHate = Spawn(class'HateList', InstigatedBy);
   self.NextHate.Hater = Other;
   self.NextHate.FirstHate = self.FirstHate;
   self.NextHate.NextHate = None;
   
   // Log(self@+=@NextHate);
   
   return NextHate;
}

function HateList ListHead()
{
   local HateList h;

   for ( h = self; h != None; h = h.NextHate ) continue;
   
   return h;
}

function HateList SingleCheck(Pawn InstigatedBy, Pawn Other)
{
   if ( InstigatedBy == Owner && Other == Hater )
      return self;
      
   return None;
}

function bool RecurseHas(Pawn InstigatedBy, Pawn Other)
{
   Log(self@NextHate@InstigatedBy@Other);

   if ( Other == Hater && InstigatedBy == Owner )
      return true;
   
   if ( NextHate != None )
      return NextHate.RecurseHas(InstigatedBy, Other);
      
   return false;
}

defaultproperties
{
   bStatic=false
   bNoDelete=false
   CollisionRadius=0
   CollisionHeight=0
   bCollideActors=false
   bBlockActors=false
   bBlockPlayers=false
}
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: MushMatch for GusPackII [BETA 1 RELEASED]

Postby Barbie » Sat Jul 15, 2017 4:59 pm

You can easily run into an endless recursion here:
Code: Select all
function bool HasHate(Pawn InstigatedBy, Pawn Other, optional bool bForwardOnly) {
...
       b = self.NextHate.HasHate(InstigatedBy, Other, true);
...
}
Simplest version: A.NextHate == A
Two member version: A.NextHate == B and B.NextHate == A
Three member version: A.NextHate == B and B.NextHate == C and C.NextHate == A
etc.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
Barbie
Godlike
 
Posts: 1226
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MushMatch for GusPackII [BETA 1 RELEASED]

Postby Gustavo6046 » Sat Jul 15, 2017 5:03 pm

Thanks, I'll check that. HOWEVER, I've been logging. NextHate equals ListHead() in the penultimate node of the list, however it calls FirstHate.RecurseHas() instead. wtf

Also, checking for NextHate == FirstHate does not work. double wtf

I should really use a for loop
blog shit
EDIT:
I got an unrelated crash.
Image
However I think this edit works!!

Code: Select all
function bool SingleCheck(Pawn InstigatedBy, Pawn Other)
{
   return ( InstigatedBy == Owner && Other == Hater );
}

function bool RecurseHas(Pawn InstigatedBy, Pawn Other)
{
   local HateList h;
   
   for ( h = self; h != None; h = h.NextHate )
      if ( h.SingleCheck(InstigatedBy, Other) )
         return true;
         
   return false;
}


EDIT 2: ...or not. :/

EDIT 3: Triggered.
Image
And the best, it doesn't freeze the game, but make it run at like SUPER LOW FPS. And no infinite recursion is detected. I'm sure now that the error must be elsewhere!

Code: Select all
function bool SingleCheck(Pawn InstigatedBy, Pawn Other)
{
   Log(self@InstigatedBy@Other@InstigatedBy == Owner@Other == Hater);

   return ( InstigatedBy == Owner && Other == Hater );
}

function bool RecurseHas(Pawn InstigatedBy, Pawn Other)
{
   local HateList h;
   local int i;
   
   for ( h = self; h != None; h = h.NextHate )
   {
      if ( h.SingleCheck(InstigatedBy, Other) )
         return true;
      
      if ( h == self && i > 0 )
      {
         Warn("I ran into an infinite recursion. Avoided.");
      
         return false;
      }
         
      i++;
   }
         
   return false;
}


EDIT 3: HOW many times is AssessBotAttitude called? I'm sure it's over (250 / 4) aka 62. With 4 hates it gets super slow!!

EDIT 4: Removing logs seems to make it faster... until Infinite Recursion Detected.

EDIT 5: Seemingly it didn't work remaking those linked lists into inventory items:
Image

EDIT 6: Seems that with the advent of Beta 2 most errors went away. But MushMatch is still some unstable thing. :/
Last edited by Gustavo6046 on Sat Jul 15, 2017 9:55 pm, edited 1 time in total.
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: GusPackII [BETA 2 RELEASED]

Postby JackGriffin » Sat Jul 15, 2017 9:38 pm

This isn't your blog. Ask a question or work this stuff out where we don't have to scroll through useless stuff.
Relocating to Cherno.... Friendly! Friendly! <BLAM BLAM>....grrrr....
JackGriffin
Godlike
 
Posts: 3100
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: Hack coder

Re: GusPackII [BETA 2 RELEASED]

Postby Gustavo6046 » Sat Jul 15, 2017 10:01 pm

Oh, yes, sorry.

Okay so, occasionally when I get a BeaconList inventory (and other, not-so-related events, in a less frequent mnner) the game crashes, kind of like this:
Image
How do I find out where the error is and, if possible, what could be causing it? Shrinker comes with Unreal 4Ever Tournament, so the real cause can't be traced in that error window. I'll check logs; while in the past they never gave me enough information as to why the crashes were happening every 30 seconds, maybe something special is logged on crash this time? (EDIT: which it doesn't :( ).

The source code is in the zip, with GusPackII. My compiling batch file automatically uploads it to Google Drive.

[ps: please move this to a more appropriate section, this is not dedicated to just MushMatch anymore]
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: GusPackII [BETA 2 RELEASED]

Postby LannFyre » Sat Jul 15, 2017 11:49 pm

Spoiler: show
Image
all this double postan goin on up in m'here
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3

Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
LannFyre
Skilled
 
Posts: 204
Joined: Sun Dec 28, 2014 1:10 am

Re: GusPackII [BETA 2 RELEASED]

Postby Gustavo6046 » Sun Jul 16, 2017 3:41 am

Beautiful. I just saw the finest piece of art, made in the resolution of micrometers, with quality tools, on a very fine paper, and a golden coating, and Mona Lisa overlayed on ultraviolet. :ironic:
You spin me right round
User avatar
Gustavo6046
Masterful
 
Posts: 637
Joined: Mon Jun 01, 2015 7:08 pm
Location: What if I say ""?
Personal rank: Unroyal?

Re: GusPackII [BETA 2 RELEASED]

Postby sektor2111 » Sun Jul 16, 2017 6:54 am

And I have just seen an explosion of stupid codes untested, but happily announced with whistles and bells and Big Letters and USELESS as usual. I'm not even bother to read everything because it's a waste of time. What you do here is not a BETA regarding to what you think. A BETA thing should pass first Testing stage awaiting other testers, this doesn't even work as should so you will not be able to record any sort of trailer at this point because... it will go to a self-defaming thing.
We need an admin to wipe the floor here...
You can keep posting in "Last BS posted the Sequel" section - that's the spam location.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2839
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Next

Return to GameTypes

Who is online

Users browsing this forum: No registered users and 2 guests