• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Character Rankings List - Post-March 2010

Status
Not open for further replies.

Skyshroud

Smash Ace
Joined
Aug 7, 2006
Messages
794
Location
PA
Shadowlink3: Any chance of getting some videos from that tournament? The results are so awesome that I would love to see any footage.
 

Yankee

Smash Apprentice
Joined
Jul 11, 2008
Messages
135
I searched that page for meta knight and got 388 results...unbelievable...
Edit: Make that 390, 2 were written as metaknight instead of meta knight >_>
 

Kookie

Smash Apprentice
Joined
Jun 10, 2008
Messages
130
YCB Presents: 1st Annual Super Smashapalooza!
http://allisbrawl.com/ttournament.aspx?id=1343
10/18-19
49 entrants (Regional tourney)
Norcal tourney, Oregon and Nevada came
Entry Fee: $10

1: Hitori (ROB)
2: t0mmy (ROB)

3: Questionmark (Toon Link)
4: Sean (Metaknight)
5: Meep (Snake)
6: Catnip (Metaknight)
7: Tc1 (Diddy Kong)
8: QTP (Diddy Kong)
ROBs unite! Even though I'm not a ROB . . .
 

TKD

Smash Lord
Joined
Jul 25, 2007
Messages
1,587
Location
Tijuana, México
On that note, PLEASE ONLY PROVIDE MAINS. I don't care if you randomly picked Captain Falcon f or a random game in your first round if you spent the rest of the tournament as Meta Knight.


lawl people are ignoring that I think, considering I saw some results with the top 10 people each maining 3 characters
 

da K.I.D.

Smash Hero
Joined
Aug 22, 2006
Messages
19,658
Location
Rochester, NY
in rochester, the TO puts down any character that you used in an important match. so i usually have any 3 of, sonic, lucario, wolf, fox, and D3 put for me, for the nest one, im going to see if i can get 4 in
 

Mr.E

Smash Lord
Joined
Feb 14, 2003
Messages
1,520
Location
Lima, Ohio
How good a character is is ALL about the character matchups.
Which are determined by relative weight, kill potential, recovery potential, attack ranges / startups / recoveries, susceptibility to chain grabs or infinities, and so on. :p
 

Zankoku

Never Knows Best
Administrator
BRoomer
Joined
Nov 8, 2006
Messages
22,906
Location
Milpitas, CA
NNID
SSBM_PLAYER
Oh, btw, I'm fine with Shaya distributing his program, because I don't really care if people want to get their own information or not.
 

infernovia

Smash Ace
Joined
Feb 13, 2008
Messages
675
I pity the person who doesn't have a computer program to automaticly calculate results. I know I do.
Isn't it just a while loop till the end of file and taking the expressions in paranthesis and using comparisons statements that increment character specific variable? Then displaying that variable?

And for a bit more complexity, reading the statements for tournament size and then having a function for point distribution? Doesn't sound that hard to me, just incredibly repetitive/boring.
 

DMG

Smash Legend
Joined
Feb 12, 2006
Messages
18,958
Location
Waco
Slippi.gg
DMG#931
Tournaments are based on popularity or certain palyers. Warios good results are based on 3 players: Futile, Reflex and DMG. He is #3 because of that. Therefore he must be a better character than KingDedede, Falco and Mr. Game and Watch, rith?
Seriously, I saw that Wario was #3 and I even though I main him I had to do a double take. Seemed almost surreal to have a higher score than Dedede, Watch, etc. I honestly don't know how he got that high, are there some Wario players out there I'm not aware of? lol.
 

Zankoku

Never Knows Best
Administrator
BRoomer
Joined
Nov 8, 2006
Messages
22,906
Location
Milpitas, CA
NNID
SSBM_PLAYER
Yeah he said it was though I honestly cannot see why he would think otherwise. *shrug*
Some people are overly protective of their work, maybe. Shaya was probably just trying to be polite or something in case I didn't like it.

By the way, I'm copyrighting all the data that I'm collecting from public access threads on Smashboards and AllisBrawl.:laugh:
 

Zankoku

Never Knows Best
Administrator
BRoomer
Joined
Nov 8, 2006
Messages
22,906
Location
Milpitas, CA
NNID
SSBM_PLAYER
Yeah, it's almost like a professor copyrighting his lectures that involve him reading from a textbook word-for-word that he didn't write. lol
 

Shaya

   「chase you」 
BRoomer
Joined
Jun 8, 2007
Messages
27,654
Location
/人◕‿‿◕人\ FABULOUS Max!
NNID
ShayaJP
Well then.

same as before:
No warranty, no pms, it's java, figure it out. make your own printOut function (this is used for the final LISTING of the complete ranks, if you want to make it look nice and snazzy). Marth mains only, hanenbow.

Code:
/*
 * Ranking.java	.1
 *
 * Copyright 2008 THE GUY FORMALLY KNOWN AS SHAYA ON THE LULZ INFORMAL INTERNET.
 * 
 * Don't care what you do with it other than selling it. But who would buy it anyway.
 * Wait, I probably care if you say you made it. Don't not credit me or something.
 * 
 * Using this program hence implies you agree that I don't owe you anything.
 * Including but not limited to: Money, time, sex or warranty.
 */
 
import java.io.*;
import java.awt.*;
import java.util.*;

public class Ranking {

	public static void main(String args[]) {
		
		int monthRange = Integer.parseInt(args[0]);
		
		new Ranking().start(monthRange);

	}
	
	private void start(int monthRange) {
	
		Calendar rightNow = Calendar.getInstance();
		int year = rightNow.get(Calendar.YEAR) - 2000;
		int month = rightNow.get(Calendar.MONTH);
		
		RankTable[] tables = new RankTable[monthRange + 1];
		tables[monthRange] = new RankTable(TOTAL_CHARS);
		
		for(int i = (monthRange - 1); i >= 0; i--) {
			int monthLook = month;
			int yearLook = year;
			if(i > 12) {
				yearLook -= (i / 12);
				monthLook -= (i % 12);
			} else {
				monthLook -= i;
			}
			
			if(monthLook < 0) {
				monthLook += 12;
				yearLook--;
			}
			String s = months[monthLook] + " " + (yearLook < 10 ? "0" + yearLook : yearLook);
			tables[i] = new RankTable(TOTAL_CHARS);
			tables[i].setFiles(s);
			
			try {
				tables[i].start();
				tables[i].printOut(false);
			} catch(Exception e) {
				System.out.println("GONE");
				e.printStackTrace();
				System.exit(-1);
			}
			if((i - 1) < 0) {
				tables[monthRange].copyRank();
			}
			tables[monthRange].compound(tables[i]);
			tables[i].print();
		}
		try {
			tables[monthRange].setFiles("All");
			tables[monthRange].printOut(true);
			tables[monthRange].print();
		} catch (Exception e) { }
	}
	
	private String[] months = new String[]{"Jan", "Feb", "Mar",
	"Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
	
	static final int TOTAL_CHARS = 37;
}
Code:
/*
 * RankTable.java	.4
 * SHEIK = Zelda y'all.
 *
 * Copyright 2008 THE GUY FORMALLY KNOWN AS SHAYA ON THE LULZ INFORMAL INTERNET.
 * 
 * Don't care what you do with it other than selling it. But who would buy it anyway.
 * Wait, I probably care if you say you made it. Don't not credit me or something.
 
 * Also no implied or other warranty. If you somehow make java read the tournament number as infinite
 * it's your own fault. Or if your computer is running 1024mb ram - 1,073,741,824 tournaments could
 * like, i don't know, lag your computer.s
 */

import java.io.*;
import java.awt.*;
import java.util.*;


public class RankTable {


	public void setFiles(String s) {
		fileNameIn = s + ".txt";
		fileNameOut = s + ".txt";
	}
	
	public RankTable(int chars) {
	
		numChars = chars;
		
		sortedOrder = new int[chars];
		charRank = new int[chars];
		for(int a = 0; a < chars; a++) {
			sortedOrder[a] = a;
			charRank[a] = a;
			charRegular[a] = charRegular[a].toLowerCase();
		}
		one = new int[chars];
		two = new int[chars];
		thr = new int[chars];
		fou = new int[chars];
		
		points = new double[chars];
	}
	
	public void start() throws Exception {
		File f = new File(".", "in/" + fileNameIn);
		BufferedReader in = new BufferedReader(new FileReader(f));
			
		int tournaments = Integer.parseInt(in.readLine());

		System.out.println("Handling: " + fileNameIn.substring(0, fileNameIn.indexOf(".txt")) + " [" + tournaments + " tourneys]");
		//in.readLine();
		
		for(int i = 0; i < tournaments; i++) {
			/*in.readLine(); //Tournament name
			in.readLine(); //Tournament URL
			in.readLine(); //Tournament Date
			in.readLine(); //Tournament locale*/
			String info = in.readLine();
			while(getEntrants(info) == -1) {
				info = in.readLine();
			}
			
			//System.out.println(info);
			int entrants = getEntrants(info);
			info = in.readLine();
			double price = getEntry(info, entrants);
			
			info = in.readLine(); // Space between name and results
			if(info.indexOf("RESULTS") >= 0)
				info = in.readLine();
			
			double pointRate = (double)(entrants * price) / 160;

			double finalRate = pointRate;// * ratio;
			
			for(int j = 0; j < 8; j++) {
				allocPoints(info, j, finalRate);
				info = in.readLine();
			}
		}
		in.close();
	}
	
	private void allocPoints(String s, int place, double pointRate) {
		
		if(s.indexOf("(") == -1 || s.indexOf(")") == -1) {
			return;
		}
		
		String charsUsed = s.substring(s.indexOf("("), s.indexOf(")"));
		String[] toCheck = charsUsed.split("/");
		
		double pointSplit = (pointRate * (double)basePoints[place]) / (double)toCheck.length;

		for(int a = 0; a < toCheck.length; a++) {
			int charNum = getCharacter(toCheck[a]);
			
			if(charNum == -1)
				return;
			
			addPoint(charNum, pointSplit, place);
		}
	}
	
	private void addPoint(int charNum, double pointSplit, int place) {
		
		points[charNum] += pointSplit;
		totalPoints += pointSplit;
		
		switch(place) {
			case -1:
				break;
			case 0:
				one[charNum]++;
				break;
			case 1: 
				two[charNum]++;
				break;
			case 2:
			case 3:
				thr[charNum]++;
				break;
			default:
				fou[charNum]++;
		}
		
		sortRank(charNum);
	}
	
	private void sortRank(int charNum) {
	
		int rank = charRank[charNum];
		
		for(int a = (rank - 1); a >= 0; a--) {
			int oppNum = sortedOrder[a];
			if(charNum == oppNum)
				continue;
				
			if(points[charNum] > points[oppNum]) {
				charRank[oppNum] = charRank[charNum];
				charRank[charNum] = a;
				
				sortedOrder[charRank[oppNum]] = oppNum;
				sortedOrder[a] = charNum;
			} else
				return;
		}
	}
	
	private int getCharacter(String s) {
		
		s = s.toLowerCase();
		for(int a = 0; a < numChars; a++) {
			if(s.indexOf(charRegular[a]) >= 0) {
			
				if(a == SHEIK)
					return (a - 1);
				return a;
			}
		}
		
		return -1;
	}
	
	public void print() {
		for(int a = 0; a < numChars; a++) {
			int charNum = sortedOrder[a];
			if(points[charNum] == 0)
				return;
			double ratio = (points[charNum] / totalPoints) * 100;
			System.out.println(charProper[charNum] + " " + numReduce(points[charNum]) + " [" + numReduce(ratio) + "%]");
			
		}
	}
	
	private String numReduce(double num) {
		String toReturn = String.valueOf(num);
		int temp = toReturn.length() - toReturn.indexOf(".");
		if(temp > 2)
			toReturn = toReturn.substring(0, toReturn.indexOf(".") + 3);
		else
			toReturn = toReturn.substring(0, toReturn.indexOf(".") + 2);
			
		return toReturn;
	}
	public void compound(RankTable rank) {
		for(int a = 0; a < numChars; a++) {
			addPoint(a, rank.points[a], -1);
			
			one[a] += rank.one[a];
			two[a] += rank.two[a];
			thr[a] += rank.thr[a];
			fou[a] += rank.fou[a];
		}
	}
	
	public void printOut(boolean flag) throws Exception {
		File f = new File(".", "out/" + fileNameOut);
		PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
		
		out.println("MAKE YOUR OWN printOUT FUNCTION");
		
		out.flush();
		out.close();
	}
	
	public void copyRank() {
		charRankComp = new int[numChars];
		for(int a = 0; a < numChars; a++)
			charRankComp[a] = charRank[a];
	}
	
	private int getEntrants(String s) {
		String temp = "ENTRANTS: ";
		if(s.indexOf(temp) == -1)
			return -1;
		int i = temp.length();
		return Integer.parseInt(s.substring(i));
	}
	
	private double getEntry(String s, int entrants) {
		int i, j;
		boolean flag = false;
		if(s.indexOf("ENTRY:") >= 0) {
			i = "ENTRY: ".length();
			j = s.indexOf("ENTRY: ");
		} else if(s.indexOf("PAYOUT:") >= 0) {
			i = "PAYOUT: ".length();
			j = s.indexOf("PAYOUT: "); 
			flag = true;
		} else {
			System.out.println("OH GOD THE WORLD IS OVER");
			System.exit(-1);
		}
		
		String num = s.substring((j + i));
		
		if(num.startsWith("$")) {
			num = num.substring(1);
		}
		double entry = Double.parseDouble(num);
		if(flag) {
			entry = entry / entrants;
		}
		
		return entry;
	}
	
	private int numChars;
	
	private String fileNameIn;
	private String fileNameOut;
	private String templateFile;
	
	private int[] sortedOrder;
	private int[] charRank;
	private int[] charRankComp;
	public double[] points;
	private double totalPoints;
	
	public int[] one;
	public int[] two;
	public int[] thr;
	public int[] fou;
	
	private String[] charProper = {"Mario", "Luigi", "Peach", "Bowser", "Donkey Kong", "Diddy Kong", "Yoshi", "Wario",
	"Toon Link", "Zelda/Sheik", "Sheik", "Ganondorf", "Link", "Zero Suit Samus", "Samus", "Pit", 
	"Ice Climbers", "R.O.B.", "Kirby", "Meta Knight", "King Dedede", "Olimar", "Fox", "Captain Falcon", "Wolf",
	"Falco", "Pikachu", "Pokemon Trainer", "Lucario", "Jigglypuff", "Marth", "Ike", "Ness",
	"Lucas", "Mr. Game & Watch", "Snake", "Sonic"};
	
	private String[] charRegular = {"Mario", "Luigi", "Peach", "Bowser", "Donkey", "Diddy", "Yoshi", "Wario",
	"Toon", "Zelda", "Sheik", "Ganon", "Link", "Zero", "Samus", "Pit", 
	"Climber", "Rob", "Kirby", "Meta", "Dedede", "Olimar", "Fox", "Falcon", "Wolf",
	"Falco", "Pika", "Trainer", "Lucario", "Jig", "Marth", "Ike", "Ness",
	"Lucas", "Game", "Snake", "Sonic"};
	
	private final String swfBase = "http://www.smashboards.com/images/char/";
	private final String[] swfImage = {"mario", "luigi", "peach", "bowser", "dk", "diddy", "yoshi", "wario",
	"toonlink", "zelda", "shiek", "ganondorf", "link", "zerosuitsamus", "samus", "pit", 
	"popo", "rob", "kirby", "metaknight", "dedede", "olimar", "fox", "falcon", "wolf",
	"falco", "pikachu", "pt", "lucario", "jigglypuff", "marth", "ike", "ness",
	"lucas", "gw", "snake", "sonic"};
	
	private int[] basePoints = {10, 7, 4, 4, 1, 1, 1, 1};
	
	private String[] tableHeaders = {"Rank", "Character", "Points", "Movement", "1st", "2nd", "3rd-4th", "5th-8th"};
	private static final int MOVE_FLAG = 3;
	private static final int SHEIK = 10;
	private static final int ZELDASHEIK = 9;
}
Be aware of things that could throw off results.
Such as Ankoku's silly list having a top 8 name with parenthesis "(" or ")".
In such a case the person should not acquire any points for anything.

You need two folders, an "in" folder and an "out" folder, within the directory that both the programs are loaded in.

The main function takes in a number, that is referring to how many months back (from 'today') would you like to tabulate results. Ankoku officially has this at 2.

Each "in" file is required for each month. The file name for this month would be Oct 08.txt

The in month file needs to have the first line specifying how many tournaments are being calculated. The results Ankoku post in his list should be all thats needed

i.e. "Oct 08.txt" within the in directory:
18

TOURNAMENT: Play-N-Trade
LINK: http://allisbrawl.com/ttournament.aspx?id=2760
DATE: October 4th, 2008
LOCALE: Atlantic North
ENTRANTS: 16
ENTRY: $10.00
1 NES n00b (Meta Knight/Luigi)
2 Poser (Kirby/Donkey Kong)
3 Moop (Wolf)
4 Chase (Ike)
5 Collin (Wolf)
6 Max (Link)
7 Rawr (Mr. Game & Watch/Olimar)
8 Edge (Link)
Of course the number there is 18, but if thats all thats there it should just be '1'.

Also infernovia, don't talk like you know anything. The reason there are PROGRAMS in this world is to do repetitive/boring actions at extremely fast speeds. You obviously have no grasp or concept of the subject.

And finally, the final list covering joost Ooctubar. Which now is at 30 tournaments.
P.S. Ankoku. I presume TOURNAMENT: SoVa PRESENTS: BRAWL SINGLES AND DOUBLES! is $10.00 Entry, not $10.00 Payout.

Handling: Oct 08 [30 tourneys]
  1. Meta Knight 477.14 [27.54%]
  2. Snake 220.93 [12.75%]
  3. Wario 136.03 [7.85%]
  4. Mr. Game & Watch 93.79 [5.41%]
  5. King Dedede 89.89 [5.18%]
  6. Marth 89.39 [5.16%]
  7. Donkey Kong 76.47 [4.41%]
  8. Lucario 70.57 [4.07%]
  9. Diddy Kong 52.95 [3.05%]
  10. Ice Climbers 46.06 [2.65%]
  11. R.O.B. 36.32 [2.09%]
  12. Pit 33.47 [1.93%]
  13. Falco 31.82 [1.83%]
  14. Zelda/Sheik 31.22 [1.80%]
  15. Sonic 31.18 [1.80%]
  16. Zero Suit Samus 28.21 [1.62%]
  17. Olimar 26.06 [1.50%]
  18. Kirby 24.25 [1.39%]
  19. Ike 19.55 [1.12%]
  20. Peach 18.62 [1.07%]
  21. Wolf 15.19 [0.87%]
  22. Pikachu 14.59 [0.84%]
  23. Lucas 11.13 [0.64%]
  24. Bowser 11.12 [0.64%]
  25. Luigi 8.73 [0.50%]
  26. Fox 7.73 [0.44%]
  27. Toon Link 6.37 [0.36%]
  28. Captain Falcon 5.45 [0.31%]
  29. Link 4.53 [0.26%]
  30. Mario 4.25 [0.24%]
  31. Jigglypuff 3.25 [0.18%]
  32. Yoshi 3.06 [0.17%]
  33. Pokemon Trainer 1.30 [0.07%]
  34. Ness 0.78 [0.04%]
  35. Ganondorf 0.45 [0.02%]
  36. Samus 0.37 [0.02%]
 

Zankoku

Never Knows Best
Administrator
BRoomer
Joined
Nov 8, 2006
Messages
22,906
Location
Milpitas, CA
NNID
SSBM_PLAYER
Shaya, think about it. Payout = Entry Fee * Number of Entrants. The difference being, sometimes people enter a convention or a whole group of tournaments for a single universal entry fee so payout is more relevant than the initial entry fee (which tends to be something ridiculous if it's supposed to pay for Brawl Singles, Brawl Doubles, Melee Singles, Melee Doubles, Street Fighter 3rd Strike, and competitive Pokémon or something to that effect).
 

Zankoku

Never Knows Best
Administrator
BRoomer
Joined
Nov 8, 2006
Messages
22,906
Location
Milpitas, CA
NNID
SSBM_PLAYER
Code:
else {
			System.out.println("OH GOD THE WORLD IS OVER");
			System.exit(-1);
		}
lol. Nice catch-all condition.

Anyway, I see what the big deal is now. For some reason you decided to ALWAYS look for both entry fee and entrant count, when all I was ever interested in was total payout. But sometimes people don't record the total payout and it's easy enough to glean the entry fee from original tournament threads.
 

Shaya

   「chase you」 
BRoomer
Joined
Jun 8, 2007
Messages
27,654
Location
/人◕‿‿◕人\ FABULOUS Max!
NNID
ShayaJP
Interesting information:

Meta Knight's rise of domination has been constant.
Going from June onwards, MK's total point holding as a percentage has only continued to grow:

June: 13.69% [Snake first at 17.94%] - July 20.06% - August 24.13% - September 26.49% - October 27.54%

All time shows Meta Knight at an averaged 21.54% dominance. So like for every top 8 there is at least 1.5 MKs. But now it's well over 2 MKs per top 8.
 

Clai

Smash Lord
Joined
Dec 9, 2007
Messages
1,254
Location
Where men are born and champions are raised
Chula Vista Weekly XVII:
http://allisbrawl.com/ttournament.aspx?id=3197
10/19/08
20 entrants
Entry Fee: $7

1: Hall (Snake)
2: MogX (Kirby)
3: TKD (Meta Knight)
4: Havok (Marth)
5: Kaos (Meta Knight)
5: Powered By Sex (Snake)
7: Reaper (Meta Knight)
7: Nyjin (Falco)
9: Soul (Pit)
9: Underwing (Toon Link)
That is, by far, the single most awesome tag name that has ever existed for any gaming franchise in the universe.

I have nothing else to say. Move along.
 

DanGR

BRoomer
BRoomer
Joined
Apr 10, 2008
Messages
6,860
-doesn't expect this to be counted and just wanted to show how strange it was-

I don't have the link cuz they didn't advertise it on smashboards, but yeah... This was the funniest tourney I've been to in a while. Everyone went by their first names for some reason.
-17 peeps
a Play n Trade tourney

1:DanGR (Olimar, MK*)
2:Sam (Olimar)
3:??? (ZSS)
3:Trent (Olimar)
5:??? (ZSS)
5:??? (Link)
7:John (Pikachu)
7:Nathan (Marth)

*- I used some MK, but just to make some of the matches go by faster, lol. In other words, I could have beaten the peeps I used MK against with Olimar.
 

popsofctown

Smash Champion
Joined
Mar 13, 2008
Messages
2,505
Location
Alabama
that's not why he used MK, he used MK because MK is less stressful on a laggy HiDef tv then Olimar (who gives you pounds of landing lag if you don't do his aerials just right and requires pivot grabbing)
 
Status
Not open for further replies.
Top Bottom