11-04-2004, 03:24 AM | #1 | ||
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
A Programmer Dynasty (Baseball Manager)
Before I start on why I start this thread just a little background on my person:
I´m from Germany and 26 years old. At the moment I study History to become a teacher someday. As most people in Europe I love football (and by that I mean soccer for all your Americans) and watch all of the games by my hometeam (Borussia Dortmund) on TV. 6 years ago I became a huge Redsox fan and during my 5 month stay in Boston I became a diehard. I watch as much games as possible here in Germany (MLB.tv) and still have photos of me in front of the Green Monster on my wall. During the 5 month in Boston I went to about 10 games (2 of them against the Ya*ke*s, one with "the old Pedro" on the mound) at Fenwaypark. I know pretty much about how Baseball is played and just started to learn more about the "fun stuff" like Win Shares or DIPS. So why do I try to program a Baseball Manager? First of all, I have to learn C++ for one class and for me it is always easier to learn something with a projct. I´m a big fan of Ootp (in fact I´m betatester since version 5) and I have a long running Ootp-league (since 2001, 1 SIM/day) going. But as every game in my opinion Ootp is good but far from perfect and with Markus going to SI I think the game loses something from it´s charm. So I have this league and I know what problems Ootp has in some areas and I always wished that Markus would address this problem and I needed a project and so my Baseball Manager idea was born. Another reason is that I want to improve my english skills so writing this will help me to learn the language. The final goal for this project is to have a "playable version" of this game but I have absoltly no timetable. On my "to do" list: 1. I need to learn (more) C++ stuff 2. I need to learn (more) Win32 stuff 3. I need to learn (more) Baseball stuff (like more in deep stats, the financial stuff and more about the history) For the game: 1. I need a database to import into the game. (I have some stuff done here) 2. I need a gameengine to simulate games. (Again, some stuff is done) 3. I need some sort of GUI. (ideas but nothing done) 4. I need all the additional stuff like finances, coaches, scouting, contracts, etc. (nothing done but a lot of ideas) Next time I will look what I already have and what sources I use (like books). palli |
||
11-04-2004, 02:39 PM | #2 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Ok, next report:
First of all I want to write what sources I use to learn C++ and Baseball. 1. "Learning C++ in 21 days" To learn the basic stuff in C++ I can recomend this book. I read the first 14 chapters and that was a good starting point. But I hate typing the examples from books like this because it is boring (thats one of the reasons for my project). 2. "GOTO C++" Not as good as the first book but it has some advanced stuff like STL. Not good for learning C++ but a good book to look something up. 3. "Learning Visual C++.Net in 21 Days" A big disapointment. I bought this book to learn more about Win32 programming but thats almost impossible. It always uses MFC and after the first 2 or 3 chapters I decided not to use MFC (games do not use MFC anyway). 4. "Tricks of the Windows Game Programming Gurus" A great book! Exactly what I was searching for: Windows programming but absolutly no MFC. 5. "Windows Programming" (Petzold) Another great book. For game programming it is a little bit "over the top" but to look up stuff like menues, windows or buttons it is perfect. 6. "Bill James Hisorical Baseball Abstract" A good starting point to learn more about the history of the game. 7. "Win Shares" (Bill James) I´m realy proud to have one here in Germany. I thing that a Baseball Manager can use a lot of stuff from Bill James and I will not only use Win Shares as a stat. Bill James is a good starting point. When I wrote the first version of my game engine I used Bill James Log5 method to determine the outcome of an AB. It was possible to take any batter and any pitcher from MLB and simmulate one (or more) AB. The batter was representet by Hits, Doubles, Triples, Homeruns, Walks, the pitcher by Hits-, Doubles-, Triples-Allowed, HRA and BBA. People who know Ootp3-5 will notice that this is more or less the same method. The big problem is that Strikeouts have no effect, they are just Stats. So as Ootp6 switched to DIPS, I did the same. The DIPS system is much more complicated to simulate but I wrote the second version with a very simple form of DIPS. There was only the possibility of a Walk, Strikeout, Homerun or Ball into Play. When I "finished" the second version I decided to work on the database first. The reason is simple. To test the gameengine I need more then one batter and pitcher, I need a league with teams. So the last few weeks I worked on the database. The Lahman database is the perfect startingpoint. Now I needed just a way to import the database into my classes. I use the CSV-version and firstly I wrote a parser to write every table into different arrays. The problem was that this system was not very flexible. So I wrote a new parser and used vecors this time. Now I can import every table and have a vector with the master table, one vector with the pitching table and so on. The vectors consist of strings. The only problem remaining is that after the import all strings (only text, not the numbers) have "" around them. So I need to find a way to remove them. Next, I choose a startyear and search for all players that had AB´s or IP´s in that year and write the playernumber in another array so that I have exactly all players from one year. I created a simple CPlayer class (I will expand the class later) and can now fill in the information. My next project was to save the data to disc and my fist plan was to write the whole class to disc. Here I had my fist problem. I have a hard time to understand pointer and the use of Stack/Heap. I know I have to put the classes into the Heap (and I did that with "new") but then my plan to save the casses did not work anymore. So I wrote a save-function for CPlayer where I simply write every variable after variable to disc. It seems to work nicely so far. palli |
11-04-2004, 05:36 PM | #3 |
Grizzled Veteran
Join Date: Dec 2002
Location: Little Rock, AR
|
Good luck with your game. I am into the whole programming thing myself as well. I have read many of the same books. Right now I am using the GUI toolkit called Qt. It seems really cool. I got the non-commercial version for the time being. Real nifty.
Stay far far away from MFC.
__________________
Xbox 360 Gamer Tag: GoldenEagle014 |
11-05-2004, 01:16 AM | #4 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Thank you. I heard of Qt but could you please tell me more about it?
palli |
11-05-2004, 10:34 AM | #5 |
High School Varsity
Join Date: Sep 2003
|
QT info here:
hxxp://www.trolltech.com/ Baseball statistical analysis here: hxxp://www.baseballprospectus.com/ hxxp://www.baseballthinkfactory.org/ Baseball prospectus has gone to a pay site but there still are some interesting stats kept on the website that are free. Also, old articles that were written before they started to charge are still there and free. Pure statistics here: hxxp://www.retrosheet.org/ hxxp://www.baseball1.com/ hxxp://www.baseball-reference.com/ Statistics for every player who basically played baseball and the parks they played in. Good luck. There are some good programmers here on the board and several people who know baseball in and out so feel free to ask some questions. |
11-05-2004, 07:09 PM | #6 |
Grizzled Veteran
Join Date: Dec 2002
Location: Little Rock, AR
|
Qt allows you to code a GUI interface very quickly. It also does not create the overhead that MFC does. A bought the book C++ GUI Programming with Qt 3 which comes with a non-commerical version for Windows. The actual software is a bit pricy, so you will have to decide if it is worth it.
__________________
Xbox 360 Gamer Tag: GoldenEagle014 |
11-05-2004, 07:21 PM | #7 |
General Manager
Join Date: Nov 2002
Location: The Town of Flower Mound
|
Not to threadjack, but where in Germany do you live?
__________________
UTEP Miners!!! I solemnly swear to never cheer for TO |
11-06-2004, 04:02 AM | #8 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
I was born in Dortmund but moved to the north 16 years ago. I´m now in Hamburg. Maybe that is the reason for my love of the city Boston because Hamburg and Beantown are very similar.
palli |
11-06-2004, 08:15 AM | #9 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Argh, I´m working on the function to save my CPlayer class and I search for a way to save the informations like names. I use std::string to store them and I know that it is not possible to store this type to disc so now I look for a way to convert a string to some sort of char so I can save it to disc. So if someone has any idea I would be very happy.
palli |
11-06-2004, 10:56 AM | #10 | |
General Manager
Join Date: Nov 2002
Location: The Town of Flower Mound
|
Quote:
Very cool. My father was in the Army and we spent seven years in Deutschland, though more to the south. We lived in Frankfurt for three years in the early eighties and in Stuttgart for four years in the late eighties/early nineties. I miss Germany something fierce, especially around this time of the year. The Kristkindle Markt is what I visualize when I think about Germany. Gluwein, hiesse maronie, and mandeln are what it's all about. Sigh...
__________________
UTEP Miners!!! I solemnly swear to never cheer for TO Last edited by JeeberD : 11-06-2004 at 10:57 AM. |
|
11-06-2004, 11:06 AM | #11 | |
Pro Rookie
Join Date: Nov 2002
Location: Sunny South of France
|
Quote:
I know the feeling Jeeb. I spent nearly 3 years in Dresden (after the fall) and the period leading up to Christmas was probably the best, even if it was damn cold! But that 's what they have the Gluhwein for, eh?
__________________
Detroit Vampires (CFL) : Ve 're coming for your blood! Camargue Flamingos (WOOF): pretty in Pink |
|
11-06-2004, 12:55 PM | #12 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Me and my girlfriend are already very excited about the "Weihnachtsmarkt" which will start in 2 weeks.
If someone is interested, my legaue can be found here: German Baseball League We simulate every day (always 2 or 3 days) and we just started our 8. season (we were founded in 2001). We already have 2 Americans (Florida and Minnesota), one who lifes in Germany, the other is a teacher in New Jersey. palli |
11-06-2004, 01:10 PM | #13 | |
Grizzled Veteran
Join Date: Dec 2002
Location: Little Rock, AR
|
Quote:
Try a dynamic cast to conver them to char so they can be put into the buffer. It would go something like Sting I know String is not a built in varaible but I think you can still do it with class objects.
__________________
Xbox 360 Gamer Tag: GoldenEagle014 |
|
06-26-2005, 10:12 AM | #14 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Wow, almost 1 year since my last post but I still found the thread.
The great thing for me is, that I continued with my project and worked almost every day on it. To read what I posted back in my first post and to see what I have now is amazing. It is a long time but I did a lot of stuff. The game engine is now mostly done (the scoring is just basic and the defense needs more work) and I´m very pleased. The Batter/Pitcher matchup is 100% DIPS and the defense is based on zones (the ones from Retrosheet). I only use stuff that is widely accepted and proofed in the Sabermetric world. Which brings me to an importend point: I want this game as realistic as possible. So I will not use any modificators that "force" realistic results. So far everything works fine, my first test with an average league (defined by Baseball Prospectus) got me exactly the results you would expect. One more thing I worked hard on is the GUI. I hope it looks good but you can check the first 3 screenshots on my page. From now on I will continue "in public", I think that is more fun. I will post regulary what I´m working on here (the big updates) and in my forum (almost daily). Everyone who is interested can visit my webpage and read more about the project, the features and see some screenshots. Ideas and critics are welcome and if you have any questions just ask here or on my forum. Every idea from the comunity will be looked at and discussed so if you ever wanted to follow the development of a baseball manager and work on ideas then visit me: Perfect Game Btw, I´m still German, so excuse my bad grammer. palli |
06-26-2005, 01:26 PM | #16 |
College Starter
Join Date: Oct 2000
|
any thought given to have online head to head play?
|
06-26-2005, 02:10 PM | #17 | |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Quote:
Online play will be a big part of Perfect Game. I´m a Commish since 4 years so I know a lot of stuff that makes my life hard, so there is enough room to improve. There will be the possibility to play out games and then send the result to the commish. We (hopefully) found a way so it is not possible to cheat. Then there is H2H. We will look into this and we would love to build it into the game and I think sometimes it will be done but maybe not in the first release. palli |
|
06-30-2005, 07:34 AM | #18 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Another productive week.
Right now I work on the League-Schedule-Screen and most of the functionality is done. I can go to the screen and see the actual games (Hometeam, Awayteam, Gametime and both Starter). Then I can sim the day and I get the boxscores for all played games (Error and total Hits are missing right now, I have to add them next). I had some problems first to display the right set of graphics (games played or games not played) but at the end it was again easy. I hope to finish the screen this week to present a new screenshot. If you want more regular updates visit my bord, there I write small updates on a daily basis: Perfect Game Bord Next I want to make an update on my book-list (from one of the first posts in this thread): Over the last year I got a lot of new baseball books. I have now Baseball Prospectus from 2000 to 2005 and I learned a lot from this books. I will use some stuff in the game. Additionaly I got the Bill James Abstract from 1985 and his book "Historical Abstracts", both great books. Most recently I got the Palmer/Gilette Baseball Encyclopedia and it is ... big. Another great book is "Baseball by the numbers", it is hard to read but I got through it somehow. palli |
07-04-2005, 07:06 AM | #19 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
One week of work and a lot of frustration.
I worked almost every free minute on the league-schedule screen and the functionality behind that (sim one day, sim until a future day). I got most of the stuff finished, I can display the actual day with both teams, the starters (I need to add W-L and Era) and the time of play. After the day is simmed I display the played games with Winning- and Losing-Pitcher, Runs per Inning, total Hits and total Runs. The stuff behind the schedule screen was more work then I expectet. I have now a "world date" and a seperatet "league-schedule date". Since all results will be updatet right as they happen (e.g. the endurance for the pitchers) in the game and the "next starter" is changed right after the game (and not after all games are played) doubleheader should be no problem. Right now I have a very frustrating error that I can´t locat. I hope to find that buf asap to continue my work. On my project page I uploaded 2 new screenshots from the leagueschedule-screen: Project Page palli |
07-20-2005, 04:56 AM | #20 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
A new update:
School is over and I have more time now. I work hard on the defense system and because it takes so long I wrote a small information on the system: "The Defense-System in PG is based on zones. We do not use the ones from Stats Inc., we use the ones from Retrosheet. That has 2 advantages. Firstly we can use the PbP data from Retrosheet and secondly we can use UZR from MGL. The first one (the Retrosheet data) is importent to make the system realistic, the second point is importent to get realistic defense ratings for player. So how does the system work? After the Batter/Pitcher Matchup is decided (DIPS) and the ball is put into play the defense comes into play: First we decide the typ of hit (G/F/L). This is based on the G/F rating of the pitcher. After we now the typ we need a location. This is based on the R/L of the batter. Now we can decide the zone where the ball goes. The next step is to determine if the ball is a Hit or an Out. By analysing the PbP data from Retrosheet (this is an ongoing process) we know what the average is for every zone. Later we can combine that with the defender and get the result (Hit/Out). As the GM you will get a lot of informations out of this system: 1. For every game you will get the location of every BIP and the result (1B, 2B, 3B, HR, Out, Error) 2. For every player you get exact informations on all zones he played at least 1 Inning (Career and Season). That is the short form how it works. The Game-Engine is now around 6000 lines of code and the defense-system takes a lot of this lines." The Thread is here. I hope to get the system done by the end of this week but it is a lot of coding. After that I will continue with the Boxscore/Gamelog-Screen. Btw, the League-Schedule screen is already finished (you can find a screenshot on my page) and so is the Team-Schedule screen (no shot right now). So a first Demo (maybe more a snapshot) is still a possibility for late August. palli |
07-27-2005, 05:29 AM | #21 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Ok, I had no time to finish the defense system because I had to clean up the code. I had this on my "to-do" list for a long time and I had to force me to do it. It took a week and it was everything but fun.
I changed the GUI a little bit, take a look at the "new" screens. Additionaly I added a Newsletter to the site so if you are interested in my project please subscribe to always get informations on updates. Perfect Game Today I will continue with the defense system and I hope to get it done finaly by Friday. It is just typing a lot of numbers (and I mean a lot!) and it is boring as hell. palli |
07-31-2005, 04:17 AM | #22 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Just a very quick note: I finished the "basic" Defense system. WHOOO!
Take a look at my page, I wrote some stuff: Perfect Game HP palli |
10-13-2005, 03:38 PM | #23 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Finally, after a lot of hard work the first Demo (Version 0.1a) was released today!
The purpose of this first Demo is to give a first look at the Game-Engine and to take a look at the interface. It is "just" possible to sim very year (day by day or a season) and look at some League- Team- and Player-Stats. From know on I will release a new Demo every few weeks (or smaller updates every few days) so you can foloww the development. The final version is scheduled for April 2006 so I have about 6 month to add more stuff. Next on my list are: - In-Game mode (to give you something to play) - set Lineups/Bullpen for one team or all teams - Playoffs - more Stats Feedback (good and bad) or ideas are more then welcome! You can find the Download here: Perfect Game Not bad what I did in just 1 year since my first post. palli |
10-13-2005, 04:00 PM | #24 |
Hall Of Famer
Join Date: Apr 2002
Location: Back in Houston!
|
I'll have to check this out
SI
__________________
Houston Hippopotami, III.3: 20th Anniversary Thread - All former HT players are encouraged to check it out! Janos: "Only America could produce an imbecile of your caliber!" Freakazoid: "That's because we make lots of things better than other people!" |
03-28-2006, 02:42 PM | #25 |
Mascot
Join Date: Nov 2004
Location: Hamburg, Germany
|
Wow, a long time since my last post.
I worked a lot on Perfect Game and I want to get this thread back to life so here is a first update: I founded a small company together with a friend. I´m still a student and have to do a job to get money but hey, maybe 2006 is my breakthrough year (just dreaming). With Perfect Game I made some decisions to find the right place with the game. Realism is still my number one priority and so far I´m realy happy with my results. Over the last few month I changed the way I store stats (now I use a DB that stores every AB in a Retrosheet way), so now I can show almost every stat or split-stat I want. Additionaly I finished the progress of a season (except for Spring Training) so I can start longtime testing. The financial engine is implementet and I did a lot of research: you can find different type of fans and ballpark sections but all this features are optional (if you don´t want to take care of it just let the CPU do the job but still look at the detailed outputs). Maybe the biggest visual improvment is an early In-Game screen (actualy two, the strategy screen and the action screen). You can find some screenshots at my new home: Minos Games Just go to Perfect Game and select Screenshots (a total of 6 on 3 sides!). My next step is the Boxscore, something I hate to do but sometime I have to start. palli |
03-31-2006, 01:20 AM | #26 |
Pro Rookie
Join Date: Nov 2002
Location: Sunny South of France
|
Nice to see you still going at this, and coming along nicely.
One suggestion, on your web site, get rid of that release date, even if it is only an estimate. Recent events have shown it was probably best not to post a release date unless you are absolutely certain you can meet it...
__________________
Detroit Vampires (CFL) : Ve 're coming for your blood! Camargue Flamingos (WOOF): pretty in Pink |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
|
|