Front Office Football Central  

Go Back   Front Office Football Central > Main Forums > Dynasty Reports
Register FAQ Members List Calendar Mark Forums Read Statistics

Reply
 
Thread Tools
Old 08-15-2005, 02:00 PM   #1
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Dev Dynasty: FFS (Free Football Sim) Project

I didn't think that this was something that people made dynasties about, but after reading the baseball sim dynasty for a little bit, i've decided that it's probably in my best interest to start a dynasty for my own project. I extend much thanks to the thread starter of the baseball sim dynasty for the inspiration .

As some of you know, a while ago i started a thread called "The dire lack of good american football management sims" wherein i proposed a free football management sim. I'm going to try to design and code this thing over the next few years.

I've decided that i'm going to design this game rigorously before implementing anything in order to avoid confusion and speghetti code. The design segment of the development process will probably be extended longer than usual. I plan on coding some utilities ahead of the actual coding of the sim engine, though, like a roster manager, a universe generator, a draft file generator, a schedul generator, etc.

The game will be coded in Java (1.5) using Swing for GUI needs. As far as IDEs go, i'm going to use netBeans.

I'm going to concentrate on making the UI intuitive and user-friendly, while maintaining a strong sim engine and realistic but fun gameplay.

A few things that i need to do before i can really get started designing the engine and coding the game:

1.) I need a source of NFL stats that goes much deeper than the stats that nfl.com provides. Is there an NFL prospectus somewhere?
2.) I need an in depth look at injuries, their average lengths, and their relative frequencies of occurance.
3.) I need a listing of combine stats for players (40 times, bench press reps or weights, shuttle drill times, etc.) so i can determine how to scale the ratings for certain attributes.
4.) I need census name data for the name generator.
5.) I need a listing of all major cities that should be considered for football franchises.
6.) I need general climotological data for essentially the whole world, but i'd gladly take just North America or the US for now.

I've done some design previous to this post, and i'll post info on that at a later time. I simply wanted to get this started before i forgot about it or lost the inspiration to start it.


Last edited by aran : 08-15-2005 at 02:22 PM.
aran is offline   Reply With Quote
Old 08-15-2005, 04:27 PM   #2
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Okay... time for some details about the game engine. Please provide comments and ideas if you have them .

Player Ratings/Attributes
The following ratings are intrinsic to the character and are difficult to change:
Upper Body Strength
Lower Body Strength
Speed
Agility
Coordination
Dexterity

Each of these stats has a "Fitness Level". Players raise their fitness levels (and, effectively, their ratings) by working out and practicing between games. Each rating also has a "Current" and "Potential" rating, much like FOF's stats do.

These are mental ratings that are nearly impossible to improve
Work Ethic
Discipline
Intelligence
Leadership
Charisma (this effects how well players deal with the press and teammates. Higher charsima leads to quicker affinity gain)
Composure (essentially, how streaky a player is)

Positional Abilities
These ratings are more tendency based, and can usually not be derived directly from the physical and mental ratings of a player. Each position has their own appropriate set of abilities. i'm looking for more of these.

QB: Screen, Short, Medium, Deep passes
RB: none.
WR: none.
OL: Run, Pass Blocking.

All Defensive Positions: Zone, Man Coverage.

Awareness
Awareness plays a huge role in how well a player will play. Each player has an awareness score for each position. These awareness scores have a large effect on how the intrinsic physical and mental abilities of a player work together to produce positive results during gameplay.

Knowledge
Players gain knowledge as they play in any situation. Knowledge gives marginal bonuses to every stat; these bonuses usually pique right before the player is past his prime. Knowledge can almost never make up for the detriment that is caused to players once they've passed their peak skill level. Players with high knowledge and charisma (and sometimes leadership) are much more likely to become mentors or positional leaders.

Fame
As players win awards and achieve records and career milestones, they recieve fame points. Players with very high fame points have a tendency to become Hall of Famers. Players with high Knowledge and moderate to high Fame sometimes become coaches.

Personality
The personality of a player will be determined based upon a combination of three ratings: Selfishness, Greediness, and Brashness.

Last edited by aran : 08-15-2005 at 04:30 PM.
aran is offline   Reply With Quote
Old 08-15-2005, 09:09 PM   #3
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Now for a few random subjects:

Number of teams: 10-40 per league. Expansion allowed.
Number of divisions: 1-4 per league. Must be at least 4 teams in a division.
Number of conferences: 1-2 per league. I have no idea if 3 should be an option. That seems like it'd make scheduling a nightmare.

Scheduling
I plan on allowing schedules configurable to be between 10 and 20 games long.

I'm aiming to make scheduling a very felxible part of the game. The commish will have control over number of divisional games played, number of conference games played, number of non-conference games played, and if he just wants to have scheduling done like it is in the NFL. I intend to allow the commish to give GMs the chance to schedule their own games against CPU teams or other human teams. Commishes will also be able to assign types of games to certain weeks (i.e. week 1, 2, 4, and 10 are non-conf games, week 3, 5, 7, 8, 9 ,15 are divisional games, etc).

I will include a feature where you can check your Strength of Schedule based on opponents record last season, and opponents record against you over the past 2-4 seasons.

NOTE: this is the first part of the game that i'm going to be coding. I actually designed the algorithm to near completion last night.

Last edited by aran : 08-15-2005 at 09:11 PM.
aran is offline   Reply With Quote
Old 08-15-2005, 11:40 PM   #4
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
YES! i found two great sites for stats. One from which i ordered the 2005 NFL Prospectus. I'm looking forward to perusing that bad boy after i get it on wednesday.

Here's the other site: http://www.twominutewarning.com/research.htm

freakin' awesome. I'm so happy that i found it! It should greatly help me evaluate my sim results.

Last edited by aran : 08-15-2005 at 11:40 PM.
aran is offline   Reply With Quote
Old 08-16-2005, 02:52 PM   #5
MalcPow
College Benchwarmer
 
Join Date: Jun 2005
Location: San Diego
You haven't gotten much positive feeback on this idea I guess, but I'm sure people will be watching with interest. You've laid out some really ambitious stuff here, and I like your ideas a lot. I'm thinking the only thing I'd have to say at the moment was that you might want to simplify things as much as possible at this stage. You seem to be starting off with a focus on getting a decent sim model going and I think that's smart. I like your other ideas on charisma and fame and the like, they're great, but I'd start with producing a program that played out a football game, and produced semi-realistic results. The rest of that stuff just seems a long way down the line. It might feel like you want to lay this massive foundation for something that can be built up into this amazing game, but for now I'd just work on some solid code that takes two teams, plays four quarters of something resembling football, and produces some number of stats.

I think if you don't compartmentalize the project like this then you'll just get overwhelmed and lose focus. Just start with certain aspects and go from there. I think your idea of building separate utilities to complement the game later is sound as well, fits this same basic model of focusing on something you can finish, so you can make some progress through smaller accomplishments.

My other thoughts, I'd try to avoid semi-redundant or ambiguous ratings like "dexterity" and "coordination," as well as breaking strength up into upper and lower categories. One of the great things about a game like FBCB is its simplicity in its ratings categories, and it works so well only partly because basketball is a sport with a more or less universal skillset. A text-sim for me is largely an imaginative endeavor, and I really only need to know "just enough," and not how many pull-ups a guy can do with one arm. There are much better ways to add personality to a player than to create a lot of ratings categories. You seem to have a plan of keeping the number of ratings smaller, as opposed to FOF's 200 or so for every player (though most aren't visible, or applicable, obviously), and I think that's smart. The more I think about it even, the more the basic few that the evil empire EA uses in their ncaa games are enough. I'd personally rather the complexity and nuances in results come from offensive or defensive schemes, and not from my QB's ability to throw 11-20 yard passes. Basically, I would keep individual ratings simple, leave the engine open to a variety of modifiers and such based on schemes or other factors, but don't over categorize things, I just don't feel it adds that much.

Keep posting, I'll be following. And if you need help testing, or bouncing ideas around, consider me willing to help. And good luck.
MalcPow is offline   Reply With Quote
Old 08-16-2005, 02:59 PM   #6
sabotai
General Manager
 
Join Date: Oct 2000
Location: The Satellite of Love
Here are two text files of names I use for the tennis game I am making (US Male Names and US Last Names)

http://www.irregardlessproductions.com/USMaleName.txt
http://www.irregardlessproductions.com/USLastName.txt
sabotai is offline   Reply With Quote
Old 08-16-2005, 03:00 PM   #7
SelzShoes
High School Varsity
 
Join Date: Apr 2005
Quote:
Originally Posted by MalcPow
but for now I'd just work on some solid code that takes two teams, plays four quarters of something resembling football, and produces some number of stats.
Exactly, if the basic game engine doesn't work, then all the bells and whistles don't matter. Start simple--then start adding on all the extras. The last sim/replay football game I played (I've since lost interest in the sport) was APBA for windows. It may have had alot of limitations, but the actual game worked wonderfully, the realism came from the simplicity.
SelzShoes is offline   Reply With Quote
Old 08-16-2005, 06:37 PM   #8
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
My plan is to get a data infrastructure up and useable before i ever start writing the sim engine. I'm going to complete the schedule generator, the draft class generator, and the player universe generator before i even try to write the sim part of the engine. Once i get all the ratings for players and whatnot, i'll write the league generator (basically, the screens you get when you start up a new single player game). Once i have a complete league generated, i'll have everything i need to do all the sim testing i want. I'll write the sim engine at that point.

A basic dev roadmap:

-Determine what type of data infrastructure i'll be using. (right now i'm consider using mySQL for data storage and retrieval... it'd save me an assload of coding and would probably be much faster than flat files)
-Design scheduling algorithm (done)
-create schedule generater
-create player universe generater
-create a league generater
-design and code the sim engine
-do small scale sim testing
-do large scale sim testing
-put together the general interface
-code basic AI to sign FAs where needed, do depth charts, and do limited gameplanning.
-Test that AI through running fully automated seaons (this will also cover a second phase of macro testing for the sim engine)
-Polish everything

EDIT: Thanks a lot for the feedback! The bells and whistles will obviously come after the meat is done, but i'd like to have the whole game designed to some extent before i start the sim engine and doing the overall interface and whatnot.

Last edited by aran : 08-16-2005 at 06:40 PM.
aran is offline   Reply With Quote
Old 08-16-2005, 06:41 PM   #9
Eaglesfan27
Hall Of Famer
 
Join Date: Nov 2002
Location: New Jersey
I don't know much about programming, but I'll be following this with interest.
__________________
Retired GM of the eNFL 2007 Super Bowl Champion Philadelphia Eagles (19-0 record.)
GM of the WOOF 2006 Doggie Bowl Champion Atlantic City Gamblers.
GM of the IHOF 2019 and 2022 IHOF Bowl Champion Asheville Axemen.
Eaglesfan27 is offline   Reply With Quote
Old 08-16-2005, 07:02 PM   #10
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Thanks for your support, easglesfan.

The audience is extremely important in a game like this. I don't know as much about football as some of you do, and i probably am not half the stat freak that some of you are. I can use all the help i can get.

Does anyone have experience with using mySQL for a game like this? Is it feasible to distribut mySQL with my game (free of charge, of course) and have it run a database to store player and team information?
aran is offline   Reply With Quote
Old 08-16-2005, 10:53 PM   #11
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Holy flying crap... HSQLD.

Ladies and gentlemen, you will be able to trade your leagues with your friends as easily as copying five files out of you game's database dir and e-mailing them to your friend.

Incredible. This makes me so happy. I was really worried about problems with a bulky SQL that was annoying to set up and/or a pain for the user to back-up or edit.

WOO!

Last edited by aran : 08-16-2005 at 10:54 PM.
aran is offline   Reply With Quote
Old 08-17-2005, 05:23 AM   #12
condors
College Starter
 
Join Date: Oct 2000
KUTGW!
condors is offline   Reply With Quote
Old 08-17-2005, 06:10 AM   #13
CraigSca
Pro Starter
 
Join Date: Jul 2001
Location: Not Delaware - hurray!
Aran,

You can go to census.gov to get name information. It has every firstname and surname used in the States as well as their frequency. Pretty cool, imho.
__________________
She loves you, yeah, yeah, yeah, yeah!
She loves you, yeah!
how do you know?
how do you know?

CraigSca is offline   Reply With Quote
Old 08-17-2005, 06:11 AM   #14
CraigSca
Pro Starter
 
Join Date: Jul 2001
Location: Not Delaware - hurray!
Quote:
Originally Posted by aran
YES! i found two great sites for stats. One from which i ordered the 2005 NFL Prospectus. I'm looking forward to perusing that bad boy after i get it on wednesday.

Here's the other site: http://www.twominutewarning.com/research.htm

freakin' awesome. I'm so happy that i found it! It should greatly help me evaluate my sim results.

"The Hidden Game of Football" attempted to do for football what Bill James and Co. did for baseball. Lots of great info in there as well.
__________________
She loves you, yeah, yeah, yeah, yeah!
She loves you, yeah!
how do you know?
how do you know?

CraigSca is offline   Reply With Quote
Old 08-17-2005, 03:02 PM   #15
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Quote:
You can go to census.gov to get name information. It has every firstname and surname used in the States as well as their frequency. Pretty cool, imho.

That's VERY cool. Thanks alot .

Quote:
"The Hidden Game of Football" attempted to do for football what Bill James and Co. did for baseball. Lots of great info in there as well.
I got the Prospectus a few days ago, and it actually expands on what THGoF discusses. It has some awesome ideas on how to analyze football stats that i am going to try to utilize in FFS.
aran is offline   Reply With Quote
Old 08-17-2005, 04:07 PM   #16
Travis
Pro Rookie
 
Join Date: Aug 2001
Location: Canada eh
One thing that I think would be tremendous to add would be in regards to the mental abilities that you were saying might be near to impossible to change.

What about implementing a probability where a younger player that perhaps comes into the league with bad work habits joins a team with a consumate all timer who is religeous when it comes to game prep/work outs/etc (ie: highly talented but lazy rookie WR seeing day in and day out how Jerry Rice goes about his business), and through some sort of % based chance as to whether or not his habits would be influenced by that sort of example (possibly based both on the other players leadership/work ethic/charisma)? Same could hold true for a hard worker joining a team of slackers and in the end his own skills start to slip from being in a bad environment for a prolonged period of time.

Again, it shouldn't happen every time the scenario is encountered, but I think it would add a lot to the immersion factor if you have a guy who has been great for you for a long time who isn't necessarily putting up the big numbers anymore, but could be valuable to be kept around to set an example for the rest of the players.
Travis is offline   Reply With Quote
Old 08-17-2005, 06:48 PM   #17
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Quote:
Originally Posted by Travis
One thing that I think would be tremendous to add would be in regards to the mental abilities that you were saying might be near to impossible to change.

What about implementing a probability where a younger player that perhaps comes into the league with bad work habits joins a team with a consumate all timer who is religeous when it comes to game prep/work outs/etc (ie: highly talented but lazy rookie WR seeing day in and day out how Jerry Rice goes about his business), and through some sort of % based chance as to whether or not his habits would be influenced by that sort of example (possibly based both on the other players leadership/work ethic/charisma)? Same could hold true for a hard worker joining a team of slackers and in the end his own skills start to slip from being in a bad environment for a prolonged period of time.

Again, it shouldn't happen every time the scenario is encountered, but I think it would add a lot to the immersion factor if you have a guy who has been great for you for a long time who isn't necessarily putting up the big numbers anymore, but could be valuable to be kept around to set an example for the rest of the players.

I like this idea... Very interesting. Perhaps i'll have an "average work ethic" for the team, and players will slowly have their work ethic's lean towards the average team work ethic. Of course, mentors at positions will usually raise work ethic, unless a player is REALLY selfish, in which case he thinks he IS the team and will stay wherever he's at.

Thanks for the suggestion.
aran is offline   Reply With Quote
Old 08-20-2005, 02:19 PM   #18
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Sorry for the lack of updates regarding the design, i've been busy getting ready to head back to school next weekend.

Now that i know i'm going to be using mySQL for data storage, a lot of the coding can be circumvented. I've been doing a lot of thinking about how i'm going to track stats and chemistry and the like, and here's a rundown:

You have a player index table: players, with the fields team, height, weight, birthdate, exp, ratings, passing_stats, rushing_stats, recieving_stats, blocking_stats, defensive_stats, kickret_stats, kicking_stats, misc_stats. All of the _stats fields are either null or an id number. I'll join the players table with the stats tables based on that id. In this way, i can severely limit the amount of BS, all 0 data i'm storing. I'll probably end up having weekly and yearly stat-lines that will i can join with the players table in order to get yearly and weekly/stats and per game averages.

That's about all i can write now... haven't had a lot of time to dev the game recently. I should be coming up with some ideas for the sim engine soon that will be in a postable form.


Last edited by aran : 08-20-2005 at 02:20 PM.
aran is offline   Reply With Quote
Old 08-20-2005, 10:00 PM   #19
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Some details on the sim engine.

I spent a few hours today thinking of ways to sim regular passing and rushing plays. I came up with this system:

Sim Engine Design
Passing Plays
Passing plays are much harder to do than running plays, because a lot depends on many different players' abilities--there has to be more calculation in general.

Pre-snap
QB and OL make their initial reads based on their AWR. This has an impact on whether blitzes and picked up and how fast the QB gets rid of the ball.

1. Initial block checks.
Offensive line vs. defensive line abilities are checked. Each DL either gets pancaked, gets blocked for one "tick", immediately breaks the block, or, due to poor OL awareness, goes unblocked. A similar thing happens to blitzing LBs, though only the OL is checked at this point. The QB is dropping back during this tick.

2a. QB's first look.
Depending on how far back the QB drops:
QB finishes his three step drop and looks.If his AWR is under 85 He sees his first reciever and either throws or waits until the next tick. If his AWR is at or over 85, he sees his first and his second reciever, decides to throw or waits until the next tick.
QB is in a 5 step drop for half of this tick, if his AWR is over or at 75, he gets to see his first reciever decide to throw or wait until next tick without penalty. If his AWR is lower than 75, he suffers a penalty to power and accuracy for throwing durnig this tick.
QB is still in a 7 step drop. He can see his first reciever and perhaps his second, but suffers a power and accuracy penalty if he decides to throw.

2b. Blitz pick-up blocks checked.
If an LB or DL gets through the OL in tick 1, an HB, FB, or TE who hasn't gone out for a pass and isn't on the line gets his chance to either pick up the block, pancake, or miss his block. If a free defensive player is still unblocked, chances are he gets the sack or bats the ball down at this point.

3a. Check all blocks.
Every player who is blocking for the QB gets their block checked. Once again, pancake, block, or broken block happens. If a player broke his block on tick 2b and wasn't fast enough to get a sack on that tick, he gets his sack or (if he's real slow) batted ball at this point.

3b. QB's second look
A this point,the QB is settled in the pocket, or has been flushed out by a slow or late broken block. He gets to look at his next reciever if his AWR is below 80, or his next two recievers otherwise and decide to throw or wait 'til next tick.

From this point on, it's just a repitition of tick 3 until either there's a sack, a throw, or the QB runs.

The Pass
The QB decides on who he's going to throw to based on his AWR and any pre-snap reads he has. When he throws the pass, the reciever and coverer's abilities are checked against each other, and the QBs abilities are checked to see if the throw in off target completely, intercepted, batted down, caught, or dropped.

Phew, that was exhaustive. Typing it up actually helped me to develop it further. I'm going to write out what happens on running plays tomorrow. Any comments, suggestments, or adjustments?
aran is offline   Reply With Quote
Old 08-20-2005, 10:04 PM   #20
Eaglesfan27
Hall Of Famer
 
Join Date: Nov 2002
Location: New Jersey
Why should a QB suffer an accuracy and power penalty when he takes a 7 step drop? Sure, he should have more chance of being sacked because that gives slightly more time for the defense to get to him, but do those extra few steps cause him to throw less powerfully or less accurately? I don't think so.
__________________
Retired GM of the eNFL 2007 Super Bowl Champion Philadelphia Eagles (19-0 record.)
GM of the WOOF 2006 Doggie Bowl Champion Atlantic City Gamblers.
GM of the IHOF 2019 and 2022 IHOF Bowl Champion Asheville Axemen.
Eaglesfan27 is offline   Reply With Quote
Old 08-20-2005, 10:24 PM   #21
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
No no no... the second tick is WHILE he's dropping back. He is penalized because he hasn't set his feet.
aran is offline   Reply With Quote
Old 08-20-2005, 11:15 PM   #22
Eaglesfan27
Hall Of Famer
 
Join Date: Nov 2002
Location: New Jersey
Quote:
Originally Posted by aran
No no no... the second tick is WHILE he's dropping back. He is penalized because he hasn't set his feet.

Ahh, my misunderstanding
__________________
Retired GM of the eNFL 2007 Super Bowl Champion Philadelphia Eagles (19-0 record.)
GM of the WOOF 2006 Doggie Bowl Champion Atlantic City Gamblers.
GM of the IHOF 2019 and 2022 IHOF Bowl Champion Asheville Axemen.
Eaglesfan27 is offline   Reply With Quote
Old 08-20-2005, 11:19 PM   #23
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Quote:
Originally Posted by Eaglesfan27
Ahh, my misunderstanding

No problem. Thanks for pointing that out. I actually went back and double-checked a lot of it to make sure i hadn't missed anything. Your question was indeed valid and helpful.
aran is offline   Reply With Quote
Old 08-21-2005, 07:40 PM   #24
aran
High School Varsity
 
Join Date: Jan 2005
Location: New Jersey, USA
Running Plays
Running plays are simulated using a system of phases, similar in concept to the way passes are handled.

1. Initial phase.
This is right after the ball is snapped, before the ball is either pitched or handed-off. Blocks are checked here, and any missed blocks or broken blocks will usually result in a stuff if they are in the direction of the run. During this phase, it is determined which line gets the early advantage (i.e. moves the other line back all together).

2a. Hole formation
The defensive players' play recognition abilities (Intelligence, knowledge, and awareness) are evaluated here to see if they can read the run and stop it.

-"Inside" Runs
For runs between the TEs, this is where the successful blocks in phase 1 either form a hole or end up a dead end for the RB. The success of the hole's formation is largely based on the strength and awareness of the linemen.

-"Outside" Runs
For runs outside the TEs, there really isn't a hole to form, so this phase is largely the RB getting around the line.

3. The First Layer of the Defense
Now we check if the DL and LBs who were blitzing, spying, or in shallow zone coverage can make a play. Blocks are checked again, and unblocked players who were blitzing in phase 2 get their chance to be either picked up, missed (if the play is run towards them), or forgotten (if the play is run away fromthem). This layer usually occurs between -3 and 3 yards (in comparison to the line of scrimmage). If the RB makes his way past this layer, he usually has between 0 and 4 yards.

4. 2nd Layer
Those defensive players who were in man-to-man and read the play, or were in mid-range zones get their chance to get to the RB and make the tackle on this phase. The run's direction determines what speed rating is required for each individual defensive player to get to the RB and try to make a tackle. This layer is usually between 3 and 7 yards past the line of scrimmage. If the RB makes it past this layer, he's usually in damn good shape for a run of about 10-15 yards.

5. Third Layer
The third layer consists of secondary players who were in deep zones or didn't read the play and were in man coverage on a WR/TE.

6. Footrace.
If the RB makes it to this phase, he's by the defense as a whole and is on his way to the endzone, though if a player who is faster than him is giving chase, they will probably catch the RB.

There's more i have designed regarding breaking tackles, gang tackling, and the like. I'll get that out later.
aran is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is On
Forum Jump


All times are GMT -5. The time now is 02:15 AM.



Powered by vBulletin Version 3.6.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.