Collaborative project, brainstorming.

Need some nice Mods? Here, you are right!
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Collaborative project, brainstorming.

Post by Higor »

This thread is to expose an interesting point made yesterday.

I intend to pick something like a small mutator, or gametype and then make a shared folder (DropBox works for that? any suggestions?) and give some ppl here access.
The folder would have the same structure as a compilable UT project.

Anyone posting can make suggestions, or actually post snippets or own changes to it.
There will be rules about code comments (like character limits) and every change will have a comment with the code owner on it.
Everytime a change is done, a mark is added to a text file to indicate what was changed.

It will work very similarly to a SVN and the project will then belong to the community the moment it goes up.
I'm not used to this kind of project, and therefore, I'm leaving this open to discussion so that it can be properly refined and rules properly set.


The discussion's main priority should be the about it's work methodology, but you can append at the end of your post what kind of mutator/mod/other stuff would be nice to start working on.


======== Rules nobody seemed to disagree on ========
- Epic games styled indentation.
================================================

======= (things sitting in my Fernando.u that never saw the light)
Master Menu mutator > Controls and brings up other mutator's window configs (requires mutators and mod to support it), includes private messaging.
Gunloc mutator > Bias certain players by adding inventory, modifying damage, regeneration, ammo gain per kill individually (Master menu compatible).
Dynamic monster adder > Works in any gametype with monsters, measures the monster types, and increases monster count if new players join (charm on SP games).
======= Other
Ingame package obfuscator > can obfuscate packages partially - NATIVE
FV_InputHandler > input key detector, has huge improvement room - NATIVE
Last edited by Higor on Tue May 07, 2013 4:35 am, edited 1 time in total.
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

Re: Collaborative project, brainstorming.

Post by Wises »

oh wow , good stuff man :)

I have a few ideas / concepts which I think?.. would be good .. how would I go about doing this?.. Just thought , whilst reading , that perhaps there could be several projrcts running side-by-side , where individuals could input into each and every project if they wanted to?

My idea/concept that I have in mind atm is a Server Query which Queries other servers from in game.
very similar to Universal Unreal , however not reliant on webservices at all.

players in game could bring up the slide in menu by type !servers or some somthing

a menu like ATB Stats would slide in showing details and information about servers (retreived from .ini).. this would be good if players enter server and are bored.
they type !servers , which details countries/players/names/scores other serverQuery information relative to other such servers.
players can then !connect sv1/2/3/4 etc and connect/join these servers *shrugs*

another smaller idea I have is removing the strength limit from players.. for a more who is the best type game.

so removing the 200 armour/health limits and allowing truely good players to become somewhat godlike during the game lol.
it could possibly lead to a gang up styles game or some kind of co-op>?

thirdly.. ATB Stats.. implementing HWID as a check + IP + host perhaps , also changing the statsByMutator to StatsByPrefix / linked to MapvoteLA13 which passes the Prefix to ATB. Also Allowing to manually configure Stats Titles based on these prefixes.

^Also thinking about some kind of ranking system.. like some forums used to have.. after players have been playing for so long they are ranked with icon and other such things. Players who get to certain ranks could be given privledges like , own skins on server and such..

like icons , like [private], [leutenant], [general] could com up beside players names and such.

other sidelined project is new Scoreboard for SmartDM.. which allows for upto 8x8 side by side player/names/stats. based on the average max serverload of 16 players.

Yep thats about all of them at this point in time.
User avatar
papercoffee
Godlike
Posts: 10447
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: Collaborative project, brainstorming.

Post by papercoffee »

3 Ideas.

Hitman mode from Kingpin L.o.C:
The Hitman mode is a game type where you don't have to pick up any weapons because everyone will fight with the same weapon equipped (yes like Arena Mode) but every 20-30 seconds changes this weapon randomly, a countdown of 3 seconds will warn the player about the change ...you can get next the Hammer or the Redeemer ...this depends on the weapon-list on the server ...any weapon can be put in in this list from NW3 to Chaos or the zark-sniper-rifle.

Gun-Game/Weapon-master:
This game mode is pretty popular in other games ...very simple you starts with the lowest gun(enforcer for example) + Imp-Hammer three kills promotes you and you will get the next best weapon ...this goes on till some one has reached the redeemer and can make the last three kills. The interesting part is the hammer... if you kill some one with it will the opponent be demoted (he gets the next lower weapon again) and you gain the next grade automatically. You can try to win this game only with the hammer ... :mrgreen:

UT Dispersion Pistol:
Our own Dispersion Pistol with cool animations like a Transformer and fire effects from Hell.
From a fast little pew pew to a devastating BWOOOAAAAAAMMMM!!
Included will be a Arena mode.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Collaborative project, brainstorming.

Post by Higor »

Still in the methodology.
I'll put a clear rule I apply in EVERY one of my projects.

- Epic games styled indentation.

======
I am liking the idea of making a collection of game modes, papercoffee, we can add Betrayal to that as well (UT3 like)
User avatar
papercoffee
Godlike
Posts: 10447
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: Collaborative project, brainstorming.

Post by papercoffee »

Higor wrote: I am liking the idea of making a collection of game modes, papercoffee, we can add Betrayal to that as well (UT3 like)
:tu: ...I like it.
SC]-[WARTZ_{HoF}
Adept
Posts: 426
Joined: Tue Feb 21, 2012 7:29 pm

Re: Collaborative project, brainstorming.

Post by SC]-[WARTZ_{HoF} »

papercoffee wrote: Gun-Game/Weapon-master:
This game mode is pretty popular in other games ...very simple you starts with the lowest gun(enforcer for example) + Imp-Hammer three kills promotes you and you will get the next best weapon ...this goes on till some one has reached the redeemer and can make the last three kills. The interesting part is the hammer... if you kill some one with it will the opponent be demoted (he gets the next lower weapon again) and you gain the next grade automatically. You can try to win this game only with the hammer ... :mrgreen:
.
I have already been working on this one for awhile now. Its tough to find the time to work on it these days. Steam decided to update Counter-strike: Source a couple years ago and continued to release updates every month which would break my server and the mods that I used. I eventually got tired of trying to keep up with the updates and decided at that point to try to create a similar game-type for UT99.

Anyways this could be a great mod for UT99 and to gather new clients that can't stand constant Steam updates breaking there favorite CSS game servers.
Image
Image
Image
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Collaborative project, brainstorming.

Post by Higor »

It is fas simpler to edit code than to produce, new projects should have a resource/code base and structure first before going up.
Initial design can take too much time to discuss and scrap and will likely lead to petty disagreements.

Another rule
- A project must already be consistent enough so that it can be worked on.
JackGriffin
Godlike
Posts: 3774
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: Collaborative project, brainstorming.

Post by JackGriffin »

All the 'cool' stuff has been done to death. Want to stretch out UT's last days? Fix what is broken.

What's the number one complaint about UT, even among the long-term playerbase? Yep, you are right: cheating. It's what drove so many players to MH. They wanted to play but not suffer from cheaters so they settled on shooting monsters. ACE is dead, UTDC is useless, and Newnet will only be interesting until about 12 hours after it's publicly released (I've looked at the source for it and it's going to be bypassed easily).

If you really want to break new ground that would interest people then bang your heads together and craft something that both fills that twitchy-shooter urge but also is very hard to cheat. I'm not talking about direct security, I'm talking about changing the paradigm just enough so that it becomes useless/pointless to cheat. Look at MH as an example. Hundreds of people played it, there were 50 servers running at one time (now about 20, but still...), clans sprung up around it, and there were precisely ONE cheat created that I know of. It was an aimbot designed to detect monsters and it worked but never got many people interested because of the nature of the mod. Coop servers are the same deal, lots of player time but little-to-no cheating.

New weapons, gungame, ultra-graphics....it's all a yawn to today's players. Let's be honest, most people can fire up any number of games on their computer that do any of these proposed ideas WAY better than UT will ever do them, and the servers are packed with people wanting to play against you. No, the people who play UT now are doing it to remind themselves about the golden days of online gaming. You create something that they can play and not have to worry about other people cheating or ruining their good time and gentlemen you will rule the day.
So long, and thanks for all the fish
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: Collaborative project, brainstorming.

Post by MrLoathsome »

Higor wrote:Still in the methodology.
I'll put a clear rule I apply in EVERY one of my projects.

- Epic games styled indentation.
Agreed. Indentation would need to be consistent.
I can adjust to some variation, as long as it is consistent within that specific class file, and doesn't
resemble the indentation used in the source code for OldSkool.

Not sure if what I have been writing the last few years conforms to " Epic games styled indentation" rules,
but I hope it is at least readable. I hope the only "issue" with my source is the absence of any comments.... :what:
I do try to make an attempt to make the variable names readable as well.

Here is an example of how I have been doing that lately.
This is the entire source for the new ControlPoint class I have been working on for the MegaDomination gametype:

Code: Select all

class C2DCP extends ControlPoint;

var CPDummy CPDum;
var bool bStarted, bDOM;

function PostBeginPlay()
{
	Super.PostBeginPlay();
	if (!bDOM) SetTimer(1.0, true); else SetTimer(2.0, true);
}

function Timer()
{
	local int Fcnt;
	local ScriptedPawn Sp;

	if (!bStarted)
	{
		if ((BP5(Level.Game).TimeLimit != 0) && (BP5(Level.Game).GameReplicationInfo.RemainingTime == (BP5(Level.Game).TimeLimit * 60)))
			return;
		if ((BP5(Level.Game).TimeLimit == 0) && (BP5(Level.Game).GameReplicationInfo.ElapsedTime == 0))
			return;
		bStarted = True;
	}

	if (!bDOM)
	{
		ForEach RadiusActors(class'ScriptedPawn', Sp, BP5(Level.Game).ChkRad, Self.Location)
		{
			if (Sp.Enemy == None) { AttackABot(Sp, BP5(Level.Game).ChkRad); Break; }
		}
		Return;
	}

	ScoreTime--;
	if (ScoreTime > 0)
		bScoreReady = false;
	else 
	{
		ScoreTime = 0;
		bScoreReady = true;
	}

	if ((!BP5(Level.Game).bMonsterTeam) || ((ControllingTeam != None) && (Controller.PlayerReplicationInfo.Team == BP5(Level.Game).MonsterTeamNum)))
	{
		Return;
	}

	Fcnt = 0;
	if ((ControllingTeam == None) || (Controller.PlayerReplicationInfo.Team != BP5(Level.Game).MonsterTeamNum))
	{
		ForEach RadiusActors(class'ScriptedPawn', Sp, BP5(Level.Game).ChkRad, Self.Location)
		{
			if ((VSize(Self.Location - Sp.Location) > 46) && ((Sp.Enemy == None) || ((Sp.Enemy != CPDum) && (VSize(Self.Location - Sp.Location) < VSize(Sp.Location - Sp.Enemy.Location)) && (FCnt < 3))))
			{
				Sp.bHasRangedAttack = False;
				Sp.MeleeRange = 23.0;
				Sp.OldEnemy = None;
				Sp.Enemy = CPDum;
				Sp.Hated = CPDum;
				Sp.SetEnemy(CPDum);
				Sp.gotostate('Attacking');
				FCnt++;
				If (FCnt > 4) break;
			}
		}
	}
}

function Touch(Actor Other)
{
	local Bot B;
	local ScriptedPawn Sp;

	if ( !Other.bIsPawn || !Level.Game.IsA('Domination') )
		return;

	if (Pawn(Other).bIsPlayer)
	{
		Controller = Pawn(Other);
	}
	else
	{
		if (ScriptedPawn(Other) != None)
		{
			Controller = BP5(Level.Game).Dummy;
			ForEach RadiusActors(class'ScriptedPawn', Sp, BP5(Level.Game).ChkRad, Self.Location)
			{
				if (Sp.Enemy == CPDum)
					AttackABot(Sp, BP5(Level.Game).ChkRad);
			}
		}
	}
	if ( (ScriptedPawn(Other) == None) && Controller.IsA('Bot') && ((Controller.MoveTarget == self) || (Controller.MoveTarget == CPDum)) )
		Controller.MoveTimer = -1.0; // stop moving toward this
	UpdateStatus();
}

function AttackABot(ScriptedPawn M, float AttackRad)
{
	local Bot B;
	local float Cdist;

	Cdist = AttackRad * 0.20;
	while (Cdist <= AttackRad)
	{
		ForEach RadiusActors(class'Bot', B, Cdist, M.Location)
		{
			if (BP5(Level.Game).MonsterTeamNum != B.PlayerReplicationInfo.Team)
			{
				M.Enemy = B;
				M.Hated = B;
				M.SetEnemy(B);
				M.gotostate('Attacking');
				Cdist = AttackRad;
				break;
			} // Set ATTITUDE to bot here....
		}
		Cdist *= 1.20;
	}

	if ((M.Enemy == None) || (M.Enemy == CPDum))
	{
		M.Enemy = None;
		M.Hated = None;
		M.SetEnemy(None);
		M.gotostate('Wandering');
	}
}

defaultproperties
{
     bStatic=False
     bNoDelete=False
     bCollideWhenPlacing=False
}
Higor wrote:It is fas simpler to edit code than to produce, new projects should have a resource/code base and structure first before going up.
Initial design can take too much time to discuss and scrap and will likely lead to petty disagreements.

Another rule
- A project must already be consistent enough so that it can be worked on.
It is also far simpler to come up with ideas for things than to either edit code or produce new content.

Just to elaborate a bit on that, there would need to be a lead person in charge of the project, who's main function would
be to coordinate things, and keep the project on track.

There would need to be very good communication between team members regarding what was currently getting worked on by each.

As a side note, the 4 fairly short functions in that bit of code I posted there contains pretty much everything I needed to do
in order to make the default Unreal Monsters, (or most any ScriptedPawn), play Domination.
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: Collaborative project, brainstorming.

Post by MrLoathsome »

JackGriffin wrote:All the 'cool' stuff has been done to death. Want to stretch out UT's last days? Fix what is broken.

What's the number one complaint about UT, even among the long-term playerbase? Yep, you are right: cheating. It's what drove so many players to MH. They wanted to play but not suffer from cheaters so they settled on shooting monsters. ACE is dead, UTDC is useless, and Newnet will only be interesting until about 12 hours after it's publicly released (I've looked at the source for it and it's going to be bypassed easily).

If you really want to break new ground that would interest people then bang your heads together and craft something that both fills that twitchy-shooter urge but also is very hard to cheat. I'm not talking about direct security, I'm talking about changing the paradigm just enough so that it becomes useless/pointless to cheat. Look at MH as an example. Hundreds of people played it, there were 50 servers running at one time (now about 20, but still...), clans sprung up around it, and there were precisely ONE cheat created that I know of. It was an aimbot designed to detect monsters and it worked but never got many people interested because of the nature of the mod. Coop servers are the same deal, lots of player time but little-to-no cheating.

New weapons, gungame, ultra-graphics....it's all a yawn to today's players. Let's be honest, most people can fire up any number of games on their computer that do any of these proposed ideas WAY better than UT will ever do them, and the servers are packed with people wanting to play against you. No, the people who play UT now are doing it to remind themselves about the golden days of online gaming. You create something that they can play and not have to worry about other people cheating or ruining their good time and gentlemen you will rule the day.
Once again, me and Jack on are the same page. I have been on that page for over a decade. I have been adding monsters to UT games and tweaking my servers so that cheating is
basically pointless since day 1.
Trolls are a different topic. (Clowns that show up and teamkill, try to break the game play etc.) But I have found if you just ignore them for a while, they lose interest and go away.

*Edit - Sorry about the double post Paper.... Jack made his post while I was still editing the post above this :loool:
(Goes back to trying to fix what is broken. :idea: )
Last edited by MrLoathsome on Tue May 07, 2013 6:11 am, edited 1 time in total.
blarg
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Collaborative project, brainstorming.

Post by Higor »

That is exactly what I meant with Epic style indentation.
Anyone who learnt unrealscript by looking, will understand that code right away, just as I did.

BTW:
This is a sample project for Betrayal gametype:
https://www.dropbox.com/sh/2z95r9klaoqva83/MTd__wdXHz (dunno if link works to unregistered users)
That Download All as zip is cool for big file counts...

As you said somewhere else, HUD + replication is a bitch, so I'll leave that for the last or somebody else.
For those that are not familiar with the gametype, the UT3 video here

EDIT: JackGriffin
Yet the most popular server runs a non-classic gametype, which I happen to currently develop.
I won't deny I had to remove a shitload exploits from the previous dev.
And believe it or not, there is a relatively young player base.

PS: GT's current n1 server is a fake one, check n2
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: Collaborative project, brainstorming.

Post by MrLoathsome »

Higor wrote:That is exactly what I meant with Epic style indentation.
Anyone who learnt unrealscript by looking, will understand that code right away, just as I did.

BTW:
This is a sample project for Betrayal gametype:
https://www.dropbox.com/sh/2z95r9klaoqva83/MTd__wdXHz (dunno if link works to unregistered users)
That Download All as zip is cool for big file counts...

As you said somewhere else, HUD + replication is a bitch, so I'll leave that for the last or somebody else.
For those that are not familiar with the gametype, the UT3 video here
LOL! Well this thread is quite popular.

No worries on the HUD + replication thing. Just got that working without any Accessed=None errors a couple of hours ago. (I think/hope. Bit more testing needed.)
I just kept drinking more and more beer until how replication works suddenly became clear to me. :mrgreen:

Then after that worked I had a couple more beers and started posting in this thread.

At the moment, I have a bunch of things on my to-do list for UT, so I probably won't be jumping into any new projects right off the bat.

However if you all get an actual project going that has any potential, I would be prepared to spend some time looking at any specific bits/sections of code
that might need attention. Have the Project Manager or lead coder contact me at that point.
blarg
JackGriffin
Godlike
Posts: 3774
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: Collaborative project, brainstorming.

Post by JackGriffin »

Higor wrote: EDIT: JackGriffin
Yet the most popular server runs a non-classic gametype, which I happen to currently develop.
I won't deny I had to remove a shitload exploits from the previous dev.
And believe it or not, there is a relatively young player base.

PS: GT's current n1 server is a fake one, check n2
What I tended to see is that players who excelled in Siege didn't seem to play anything else. It's become something of a game unto itself with the playstyle being more and more removed from Unreal-type play. This isn't meant as any sort of disrespect, it's just that comparing the success of something like Siege against stock UT depends totally on timing. At any given moment the flavor-of-the-month has always lead UT servers. It's been MH at one time, Siege, Tac Ops, Jets, etc. The tendency though is for those flavored servers to come and go over time while there has always remained a strong audience for basic, simple gameplay.

You build something simplistic in nature that plays to the strengths of UEngine (Fast, twitchy play that is shorter rounds-based and easily entered/exited while still being competitive from the moment you spawn in) but figure out some way that cheating is mooted...well you will have yourself a winner there.
So long, and thanks for all the fish
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

Re: Collaborative project, brainstorming.

Post by Wises »

main flavour of UTdown here is in this order;

DM > CS > RA > CS-CTF

BT.

in terms of cheating.. nothing so far.

point-of-difference ; *NewNet* ComboShock , Customised-Rocket-Arena.
possible changes to be made;

re: Rocket-Arena ; Perhaps lower the Armour to 0 (100 Health only) and add Armour Pickups in game.
will look at reworking the RA Mod to cater for this I think. (Probably something I can actually do)

bAddArmour=false // true=100 Armour
bAllowPickups=True // enable Armour / Health vials etc.
bAllowBelt=True
bAllowAMP=False
bAllowInvisi=False
bAllowSpecial=True
bSpecialClass=Botpack.Redeemer
bSpecialAmmo=WarheadAmmo // what ever.

...

BTW heres a nifty lil Brainstorming tool I found today;

bubbl.us online brainstorming tool

Screen-Shot

Image
User avatar
Feralidragon
Godlike
Posts: 5493
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Collaborative project, brainstorming.

Post by Feralidragon »

Here's an idea I had in the past but I never started it up:
- Make a gametype where players can level up in some way.
Levels will only provide sidegrades and not direct advantages (let's say, items to start with 150 HP but weapons doing only 80%-90% of the damage, balanced stuff like that).

People would be able to customize their weapons for instance, with limitations, and the gametype could have some Siege feeling to it if you know what I mean.
And the gametype would support both to have a local database (UScript based) or a remote SQL one (to perhaps even build a site around it and expand its possibilities).
UScript suffers from limitations in the number of arrays and stuff, but that's easily circumvented by making the local DB class based and extensible through .int files, with the special bonus of having sharding already.

As for cheating, it should be dealt with from the server rather than from the client. Anyone can tell if someone is blatantly cheating thus the same behavior can be detected from a server-side mod. But it should also have a client-side one just to reinforce any server-side findings.
Furthermore, a hack is as possible as the server allows it to be. Good server-side based architecture avoids the vast majority of hacks completely, and every single thing that somehow interacts with the client is an exploit entry, for each and every single one of those validations are needed and should always be considered untrustworthy from the start, even if they come from the holy saint. But I guess this is not something new to anyone which has somehow worked with security code at some extent.

Anyway, this is just a small post to contribute for the brainstorming alone.
Post Reply