You can subscribe to this list here.
2005 |
Jan
|
Feb
(25) |
Mar
(84) |
Apr
(76) |
May
(25) |
Jun
(1) |
Jul
(28) |
Aug
(23) |
Sep
(50) |
Oct
(46) |
Nov
(65) |
Dec
(76) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(60) |
Feb
(33) |
Mar
(4) |
Apr
(17) |
May
(16) |
Jun
(18) |
Jul
(131) |
Aug
(11) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(5) |
2007 |
Jan
(71) |
Feb
|
Mar
|
Apr
|
May
(6) |
Jun
(19) |
Jul
(40) |
Aug
(38) |
Sep
(7) |
Oct
(58) |
Nov
|
Dec
(10) |
2008 |
Jan
(17) |
Feb
(27) |
Mar
(12) |
Apr
(1) |
May
(50) |
Jun
(10) |
Jul
|
Aug
(15) |
Sep
(24) |
Oct
(64) |
Nov
(115) |
Dec
(47) |
2009 |
Jan
(30) |
Feb
(1) |
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
(4) |
Nov
(132) |
Dec
(93) |
2010 |
Jan
(266) |
Feb
(120) |
Mar
(168) |
Apr
(127) |
May
(83) |
Jun
(93) |
Jul
(77) |
Aug
(77) |
Sep
(86) |
Oct
(30) |
Nov
(4) |
Dec
(22) |
2011 |
Jan
(48) |
Feb
(81) |
Mar
(198) |
Apr
(174) |
May
(72) |
Jun
(101) |
Jul
(236) |
Aug
(144) |
Sep
(54) |
Oct
(132) |
Nov
(94) |
Dec
(111) |
2012 |
Jan
(135) |
Feb
(166) |
Mar
(86) |
Apr
(85) |
May
(137) |
Jun
(83) |
Jul
(54) |
Aug
(29) |
Sep
(49) |
Oct
(37) |
Nov
(8) |
Dec
(6) |
2013 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
(14) |
May
(5) |
Jun
(15) |
Jul
|
Aug
(38) |
Sep
(44) |
Oct
(45) |
Nov
(40) |
Dec
(23) |
2014 |
Jan
(22) |
Feb
(63) |
Mar
(43) |
Apr
(60) |
May
(10) |
Jun
(5) |
Jul
(13) |
Aug
(57) |
Sep
(36) |
Oct
(2) |
Nov
(30) |
Dec
(27) |
2015 |
Jan
(5) |
Feb
(2) |
Mar
(14) |
Apr
(3) |
May
|
Jun
(3) |
Jul
(10) |
Aug
(63) |
Sep
(31) |
Oct
(26) |
Nov
(11) |
Dec
(6) |
2016 |
Jan
|
Feb
(11) |
Mar
|
Apr
|
May
(1) |
Jun
(16) |
Jul
|
Aug
(4) |
Sep
|
Oct
(1) |
Nov
(4) |
Dec
(1) |
2017 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
(20) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
(10) |
May
(10) |
Jun
(1) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
(3) |
Apr
(9) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
(4) |
2021 |
Jan
(5) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: John A. T. <ja...@ja...> - 2005-10-14 13:40:44
|
On Fri, 14 Oct 2005, Erik Vos wrote: > Because of this, train limits should IMO be linked to CompanyType, > and be an array with an element per phase. > > For instance: > <CompanyType ....> > .... > <TrainLimit number="4,4,3,2"/> > </CompanyType> > > where the last number ("2") applies for any later phase as well. Keep in mind that companies may change "types" -- ie, in 1826 a company starts as a 5-share company then may convert to a 10-share company once it reaches its destination (so somewhere there needs to be descriptions of the rules for conversion). In 18US, a company may start as a 1-share company (a private), become a 4-share company as soon as it has a legal route, become a 5-share company, then a 10-share, and finally may become part of a system that has 20 shares. The train limits for each of these may be different (although in practice it is usually 2 or 3 different values). You can also have private companies which influence the train limit for the owning or assigned company. My personal feeling is that it will be too difficult to describe in XML every possible way this can be done, and a better approach is to implement that in Java, with part of the files distributed for a game being .class files which can be loaded with ClassLoader. That was the approach I took for a partially-completed Cosmic Encounter long ago -- the basic timing issues were codified, but all the powers that allow you to break the rules in specific ways were implemented directly in Java. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Erik V. <eri...@hc...> - 2005-10-14 13:09:18
|
> I was looking over the handling of train purchasing, and I'm > not seeing any definitions in the XML for what the maximum > number of trains a company can own. > > Has this not been defined yet? No, but I'm about to start to work out the Phases, to which IMO the train limits will be linked. > I'm pretty sure I can add it in without too much hassle, but > I just want to make sure I'm not duplicating efforts before I do. > > I think just a maxNumTrainsOwned="4" property is all we need. I don't think there is a need for this once we have the phases in place. > Is there any 18xx game that bases the number of trains a > company can own on something other than what trains are available? Yes, type of company: many games have minor companies which typically have a train limit of 2 or 1. And merger companies (like the Prussian in 1835) often may have an extra train above what normal major companies may have. Because of this, train limits should IMO be linked to CompanyType, and be an array with an element per phase. For instance: <CompanyType ....> .... <TrainLimit number="4,4,3,2"/> </CompanyType> where the last number ("2") applies for any later phase as well. > Before we go inextricably tying these things together in the > code, that might be handy to know. ;-) Keep in mind, that the way company types are defined now is by creating a dummy company, which in fact processes most of the company-type related properties. This dummy company is cloned to create each real company, whereby each company-type property can be overridden. For instance, in 1835 the Prussian would get an additional line <Company name="Pr" ...> .... <TrainLimit number="0,0,4,3"/> (the first two numbers are immaterial because the Pr cannot operate before the 4-trains run). Erik. |
From: Brett L. <wak...@ea...> - 2005-10-12 01:31:52
|
> I realize that the current monolithic architecture does not support such a > thing, but hopefully that can be fixed down the road (as that is a major >goal of mine). Got it. Ok, now I think we're on the same page. :-) It definitely looks like our goals are very similar. I want to see many of the things you listed. I don't think the game classes will need to be changed much, if at all, to support network play. ---Brett. |
From: John A. T. <ja...@ja...> - 2005-10-12 00:59:40
|
On Tue, 11 Oct 2005, Brett Lentz wrote: > No, the servlet files are placed on a webserver that utilizes something > akin to Apache + Tomcat for running the JVM. Then, it's accessed similar > to a CGI or ASP or PHP script, where the web server does all the > processing and returns result output in the form of a webpage (HTML). > > It is somewhat similar to the interface being used over at fwtwr.com, > but is a better interface IMO. ;-) > > By contrast, the Swing UI is intended to be more along the lines of > Colossus, the Java clone of Titan ( http://colossus.sourceforge.net ). What I am saying is that in the final configuration, there is a server process that handles connections from multiple clients and moderates a game. Some clients may have multiple players on the same connection (ie, a hotseat game or one where the server is just being the moderator for a FTF game). These clients may be accessed over the web or a standalone client, or perhaps AI players. In that environment, a web interface running under Tomcat is just another client. The model I am thinking of is more like ICS (Internet Chess Server), OK-Bridge, or even Battle.net -- users run their favorite client and connect to the server and play the game, whether it is an extended FTF gaming session, PBeM, or whatever. The client simply handles interaction with the user, and all of the game data, rules enforcement (perhaps even rules knowledge depending on how you want to partition the client), etc reside on the server. Individual users could run their own server for private games (probably necessary until/unless someone can host a centralized server) but that doesn't change the model at all. I realize that the current monolithic architecture does not support such a thing, but hopefully that can be fixed down the road (as that is a major goal of mine). -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Brett L. <wak...@ea...> - 2005-10-12 00:03:10
|
>> The GameTestServlet is meant to run server-side as a game server UI >> (think CGI-style server-side processing). To allow playing games through >> a web-page. The servlet serves up standard HTML pages. >Ok, so it is actually a client to the main server, right? No, the servlet files are placed on a webserver that utilizes something akin to Apache + Tomcat for running the JVM. Then, it's accessed similar to a CGI or ASP or PHP script, where the web server does all the processing and returns result output in the form of a webpage (HTML). It is somewhat similar to the interface being used over at fwtwr.com, but is a better interface IMO. ;-) By contrast, the Swing UI is intended to be more along the lines of Colossus, the Java clone of Titan ( http://colossus.sourceforge.net ). ---Brett. |
From: Brett L. <wak...@ea...> - 2005-10-11 23:50:11
|
I've added a bunch of additional JavaDoc comments throughout the main game engine code, mostly making various methods' purpose more clear. These are now in CVS. I'll continue to add more comments to the UI and elsewhere over the next couple days. I've also added a README file in the /tiles directory that notes the fact that we're not reading those files at all right now. The XML files that we're actually using are over in the /data directory. I've added a very rudimentary homepage, so now when you hit http://rails.sourceforge.net you actually get something somewhat meaningful. You can even download the nightly CVS tarball from there if you're having problems accessing CVS directly. Also, for anyone new to the list, here's the setup I've used to successfully compile the current code in CVS: Java JVM: Sun's J2SE 1.4.2 (and 1.5) OS: WinXP Pro (both 32-bit and 64-bit), Fedora Core 4 IDE: Eclipse 3.1 Lastly, ignore just about all of the stats on SourceForge. They're wrong. To quote SourceForge: "There is an ongoing issue with SourceForge.net project stats (as documented on the Site Status page) which relates to download statistics, CVS statistics and project activity rankings. These statistics (as of 2003-06-30) may be inaccurate or null (0) for your project at this time." Just check the files out of CVS and hack away. ---Brett. |
From: John A. T. <ja...@ja...> - 2005-10-11 23:50:10
|
On Tue, 11 Oct 2005, John David Galt wrote: > I don't see this as a problem. If the details of each game live in the > config file(s) and not the program itself, just make sure that the site > where the app resides contains only config files for hobby-publishers' > own games. People who own the commercial 18xx games can make and trade > config files for those easily enough. It is likely consent would be given -- there are plenty of electronic implementations of games freely available that do not require the boardgame to play, all with the blessing of the owner (some produced and distrbuted by the owner). In any event, my personal feeling is that the tiles themselves do not constitute protectable content, and that is why I have no problem putting tile images up on my site. I would argue that being able to print an in-progress map is far less of an issue than simply being able to play the game without requiring the original. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: John A. T. <ja...@ja...> - 2005-10-11 23:47:07
|
On Tue, 11 Oct 2005, Brett Lentz wrote: > I think you're misunderstanding. > > The GameTestServlet is meant to run server-side as a game server UI > (think CGI-style server-side processing). To allow playing games through > a web-page. The servlet serves up standard HTML pages. Ok, so it is actually a client to the main server, right? > The Swing-based UI is meant to be a stand-alone application. It is trivial to write standalone applications that can be run as applets in a browser as well (although you have to sign the jar files if you want to do some things), so that could be an option. For that matter, the client could be written in whatever language people want as long as the wire protocol was cleanly defined rather than just exchanging serialized Java objects via RMI, Beans or something similar. > These are two completely separate interfaces that don't run together and > are more or less completely incompatible. The intention is to allow two > totally different ways of playing a game that uses the same underlying > engine (and further secures model/view separation). > > So, when I say that the Servlet can use SVG, I mean that in the process > of serving out an HTML page to the client, it could do so using SVG as > the content-type of the tile/map images. Ok. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: John D. G. <jd...@di...> - 2005-10-11 23:32:29
|
> John A. Tamplin wrote: >> Well, if you are going to display it on the screen you can't stop them >> from printing it anyway. Besides that, there are plenty of sources for >> tiles to print if they want to go about it, including my own website >> which allows them to download EPS for the tile. Brett Lentz wrote: > Agreed. At the same time, I'd like to be careful of the games we're > cloning that are still in print and/or have large corporate copyright > holders that won't take too kindly to any efforts to republish an out of > print game. I don't see this as a problem. If the details of each game live in the config file(s) and not the program itself, just make sure that the site where the app resides contains only config files for hobby-publishers' own games. People who own the commercial 18xx games can make and trade config files for those easily enough. |
From: Brett L. <wak...@ea...> - 2005-10-11 22:28:47
|
>> I know. I was meaning that because it's a web-based application, it >> would be a good candidate for using SVG-based tile graphics being that >> there are SVG viewer plugins for most browsers. >> >> The server can deliver the SVG directly to the client without needing to >> render or store the image locally on the server first. >Since the Java client is going to be running there anyway, it isn't clear >that using SVG for display in a browser would work very well. It would >certainly be difficult to manage the display with part of it being >rendered in an applet and part in an SVG viewer plugin. I think you're misunderstanding. The GameTestServlet is meant to run server-side as a game server UI (think CGI-style server-side processing). To allow playing games through a web-page. The servlet serves up standard HTML pages. The Swing-based UI is meant to be a stand-alone application. These are two completely separate interfaces that don't run together and are more or less completely incompatible. The intention is to allow two totally different ways of playing a game that uses the same underlying engine (and further secures model/view separation). So, when I say that the Servlet can use SVG, I mean that in the process of serving out an HTML page to the client, it could do so using SVG as the content-type of the tile/map images. ---Brett. |
From: John A. T. <ja...@ja...> - 2005-10-11 22:01:32
|
On Tue, 11 Oct 2005, Brett Lentz wrote: > I know. I was meaning that because it's a web-based application, it > would be a good candidate for using SVG-based tile graphics being that > there are SVG viewer plugins for most browsers. > > The server can deliver the SVG directly to the client without needing to > render or store the image locally on the server first. Since the Java client is going to be running there anyway, it isn't clear that using SVG for display in a browser would work very well. It would certainly be difficult to manage the display with part of it being rendered in an applet and part in an SVG viewer plugin. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Brett L. <wak...@ea...> - 2005-10-11 21:57:26
|
>> It's probably a good candidate for using the tile parsing classes out to >> SVG. >I'm not sure I understand what you mean here -- SVG would just be an >output method for rendered tiles, not an interchange or storage format. I know. I was meaning that because it's a web-based application, it would be a good candidate for using SVG-based tile graphics being that there are SVG viewer plugins for most browsers. The server can deliver the SVG directly to the client without needing to render or store the image locally on the server first. ---Brett. |
From: John A. T. <ja...@ja...> - 2005-10-11 21:24:11
|
On Tue, 11 Oct 2005, Brett Lentz wrote: > Java.awt.Graphics and Graphics2D has everything we need for drawing. > > I think the biggest conversion will be that the java API doesn't use > polar coordinates, AFAIK. Neither does Postscript or SVG, so it will be converted. Since there is some common code, it may be better to make Tile.Output an abstract class rather than an interface so the common methods can be implemented there. > You may want to take a look at the server-based UI that Erik has been > maintaining. It's the GameTestServlet in the /test directory. I'm not > certain how current it is, but it's an example of a server-based > implementation using the same underlying engine. Ok. > It's probably a good candidate for using the tile parsing classes out to > SVG. I'm not sure I understand what you mean here -- SVG would just be an output method for rendered tiles, not an interchange or storage format. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Brett L. <wak...@ea...> - 2005-10-11 20:56:08
|
>Well, if you are going to display it on the screen you can't stop them >from printing it anyway. Besides that, there are plenty of sources for >tiles to print if they want to go about it, including my own website >which allows them to download EPS for the tile. Agreed. At the same time, I'd like to be careful of the games we're cloning that are still in print and/or have large corporate copyright holders that won't take too kindly to any efforts to republish an out of print game. I'm less worried about the games that have been published by various members of the 18xx community. So, at this point, I don't want to change any implementation plans. I just want to note that, in the future, we may need to have a mechanism to segregate out certain games for certain features. We'll cross that bridge if we come to it. > Right, but implementing the drawing primitives shouldn't be hard. It has > been a while since I did anything fancy in Swing but clipping is the only > one that might be an issue. Exactly. Java.awt.Graphics and Graphics2D has everything we need for drawing. I think the biggest conversion will be that the java API doesn't use polar coordinates, AFAIK. > Another output that might be of interest would be SVG or an image > (although that is probably better served by taking the PS output and > generating a bitmap from it) for web display, as a sort of status update > on a PBeM game. Definitely. You may want to take a look at the server-based UI that Erik has been maintaining. It's the GameTestServlet in the /test directory. I'm not certain how current it is, but it's an example of a server-based implementation using the same underlying engine. It's probably a good candidate for using the tile parsing classes out to SVG. ---Brett. |
From: Jeffrey B. M. <mc...@br...> - 2005-10-11 20:04:47
|
On Tue, Oct 11, 2005 at 03:52:37PM -0400, John A. Tamplin wrote: > Another output that might be of interest would be SVG or an image=20 > (although that is probably better served by taking the PS output and=20 > generating a bitmap from it) for web display, as a sort of status update= =20 > on a PBeM game. SVG is always of interest. There are some of us working on SVG support for VASSAL, and other programs. Especially for something like the rail tiles that can be precisely definted. Jeff --=20 ---------------------------------------------------------------------------- Computer Science is as much about computers as astronomy is about telescopes -- Edsger Wybe Dijkstra (1930-2002) ---------------------------------------------------------------------------- |
From: John A. T. <ja...@ja...> - 2005-10-11 19:53:01
|
On Tue, 11 Oct 2005, Brett Lentz wrote: > > Does this plan fit with what you want in rails? > > I hadn't really thought of making anything printable for various > copyright reasons. My initial reaction is that I'd rather not allow > users to leverage this game to bootleg their own copies of any 18xx > game. I suppose we can provide support for other forms of output on a > per game basis, and just enable it as we get permission from each game's > copyright holder. Well, if you are going to display it on the screen you can't stop them from printing it anyway. Besides that, there are plenty of sources for tiles to print if they want to go about it, including my own website which allows them to download EPS for the tile. > With that in mind, the primary implementation that we use would probably > need to be specifically for drawing in Swing/AWT to a user's screen. Right, but implementing the drawing primitives shouldn't be hard. It has been a while since I did anything fancy in Swing but clipping is the only one that might be an issue. Another output that might be of interest would be SVG or an image (although that is probably better served by taking the PS output and generating a bitmap from it) for web display, as a sort of status update on a PBeM game. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Brett L. <wak...@ea...> - 2005-10-11 18:25:42
|
> Does this plan fit with what you want in rails? I hadn't really thought of making anything printable for various copyright reasons. My initial reaction is that I'd rather not allow users to leverage this game to bootleg their own copies of any 18xx game. I suppose we can provide support for other forms of output on a per game basis, and just enable it as we get permission from each game's copyright holder. With that in mind, the primary implementation that we use would probably need to be specifically for drawing in Swing/AWT to a user's screen. Bridging the gap between generic output and Swing/AWT objects will take a bit of doing, but many examples of drawing already exist in our own hex drawing code, which gives us a good starting point. I don't think that changes the way you are talking about developing the classes, so yes I think that plan will fit just fine. ---Brett. |
From: John A. T. <ja...@ja...> - 2005-10-11 17:27:57
|
The main rendering class is given an output object and a tile object, and renders the tile on the output device. The output object implements an interface containing usual graphics primites, such as setting the clipping region, drawing lines, arcs, polygons, text, etc. Colors and other parameters are abstracted out using style objects -- this is important because screen drawing will need to use RGB while most printing needs CMYK to get accurate colors, plus the user may want to tweak the color mapping for thier display (personally my preference would be to have the user properly calibrate their display but there may be other reasons such as accessibility to color blind users). A particular instance of an object that implements the Output interface (possibly an abstract class if we need to share some methods between subclasses) is created external to the rendering code, including whatever additional context is needed. For example, a graphical Output subclass might have a handle to GUI object that it will draw on, while a Postscript renderer might have a file handle on which it is to write the PS code as well as parameters describing how the PS code is to be generated (such as EPSF compliant). All positions passed to the Output object are in polar coordinates centered at the center of the tile and scaled by the size of the tile, so the Output object is responsible for scaling and positioning the final output. Here is a snippet of how some map drawing code might use it: Render render; FileWriter outputFile=new FileWriter("output.ps"); OutputPS output(outputFile,62.35385); // size in points for tile output.setOrientation(OutputPS.LANDSCAPE); output.generateHeader(); for(int row=0; row<nrows; row++) { for(int col=0; col<ncols; col++) { output.position(computePosition(row,col)); Tile tile=getMapTile(row,col); render.drawTile(output,tile); } } output.generateTrailer(); Does this plan fit with what you want in rails? -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: John A. T. <ja...@ja...> - 2005-10-11 16:13:54
|
Hello -- I have developed my own software for generating print-ready tiles from the TileDesigner source and database, and I have been encouraged to contribute that code to rails. Here is an outline of my proposal, and if the developers agree that this is of interest I will port my current perl code to Java and submit it. Note that at present I am not committing to integrate it with the rest of the project or even implement the GUI interface, but at least it will get a common code base in place and be easy to extend to other renderers. Everything is vector based so it is scalable to any size or resolution. This message will contain the definition of what goes into a tile, and later messages will include the object factoring for the code to manipulate and draw tiles. Currently, my tile data is kept in an Informix database and is derived from the original TileDesigner database as well as PS18XX data. The tile data has been modified to get print-ready output and to allow layout tweaks at database import time rather than strictly when it is rendered, so manual changes can be made (especially needed for very crowded tiles) while simple tiles require little intervention. I propose to create an XML DTD for tile information that represents all information required for a tile, including everything required to draw the tile as well as any data necessary for gameplay. This is intended to be an interchange format rather than a storage format, although it could be used that way until a proper database is created. I know there is an XML format that is currently in place that does part of this, but it needs to include much more. Here is the current database schema for the tile database. Note that there is some derived data in here, such as connectivity information -- the derived data is treated as a cache and would not be present in the exchange format, rather it would be generated on import. All positions are defined in polar coordinates -- (ang,dist) is the angle and distance from the center of the tile, with distance being scaled by the radius of the tile. So, (0,1) is the right-most point on a flat-bottom tile. tiles ===== tile_id serial unique identifier tile_code char(16) code of tile, not necessarily unique tile_shape char(4) hex etc printed_number char(4) number actually printed on tile color varchar(20,6) label char(20) TileDesigner calls it category label_ang smallfloat Coordinates of label label_dist smallfloat label_rotate smallfloat rotation of label relative to tile label_font char(1) choice of which font to draw (limited set) label_justify char(2) justification of label long_name char(32) full descriptive name of tile origin varchar(32,0) original game using tile edge_conn integer bitmap of inter-edge connections d0-d4=AB-AF, d5-d9=BC-BA, ... relatively easy to rotate with tile junc_edge_conn integer bitmap of connections from junctions to edges d30-d31: two-bit type field 00: normal; d0-d5=J0/A - J0/F, d6=J1/A... 01: 6-way; always connected to nearest edge, d0-d4=J0/J1 - J0/J5, ... 1x: reserved interjunc_conn integer bitmap of connections between junctions d0-d4=J0/J1 - J0/J5, ... tile_junctions ============== tile_id integer foreign key into tiles junction_num smallint tile_id,junction_num is primary key junction_type char(4) type of junction, including number of tokens junction_ang smallfloat polar coordinates of junction junction_dist smallfloat junction_rotate smallfloat rotation of junction relative to tile null for whistlestops means draw it with a dot rather than a bar junction_revenue char(4) revenue (can mean other things for some junction types such as refueling junctions) revenue_ang smallfloat polar coordinates of revenue label revenue_dist smallfloat null means don't draw it tile_jun_annot (typically home tokens or reserved slots) ============== tile_id integer tile_id,junction_num foreign key to tile_junctions token_slot smallint index from 1 into token slots in junction annotation_id integer foreign key into annotations tile_connections ================ tile_id integer foreign key into tiles pos1_ang smallfloat polar coordinates of 1st end pos1_dist smallfloat pos2_ang smallfloat polar coordinates of 2nd end pos2_dist smallfloat rules for canonical choice of 1st/2nd ends conn_type char(8) connection type (includes gauge, ferries,..) conn_level smallint drawing order for overlapped connections basic rule - if two connections meet at some point, their levels must be within 1. If they cross, their levels must be at least 2 apart. conn_radius smallfloat radius to draw connection. negative means it curves away from the center, positive curves toward the center of the tile. A typical 7 tile would be -.5, while #8 would be -1.5. A 0 radius results in a straight line. tile_annotations ================ tile_id integer foreign key into tiles tile_annot_num smallint tile_id,tile_annot_num is primary key annotation_id integer foreign key into annotations annot_ang smallfloat polar coordinations of annotation annot_dist smallfloat annot_scale smallfloat scale to draw annotation annot_rotate smallfloat orientation of annotation base_level boolean true if drawn as part of tile background annotations =========== annotation_id serial unique key annot_desc char(40) text description of annotation annot_text varchar(255) Postscript code to draw annotation tile_upgrades ============= base_tile integer foreign key into tiles upgrade_tile integer foreign key into tiles base_tile,upgrade_tile is primary key game_tiles ========== game_id integer foreign key into games tile_id integer foreign key into tiles orientation smallint rotation relative to canonical orientation quantity smallint number of tiles present, 0 indicates it is a tile on the map, a negative number indicates the given number are supplied but are treated as infinite. tile_number char(4) number printed on tile in this game game_upgrades boolean use game-specific upgrades rather than std spec_upgrades boolean does game require special upgrade info The annotations table would likely need to be modified to include other ways of drawing the annotation, as well as gameplay interactions (ie, a river annotation needs to somehow include the fact that it costs money to build on that hex). So, a sample subset of an XML file for a couple of tiles: <tile id=27 code="7" origin="1829" color="yellow"> <conn pos1="(330,.866025388)" pos2="(270,.866025388)"/> </tile> <tile id=32 code="14" origin="1829N" color="green"> <junction type="2" revenue="30"/> <conn pos1="(270,.866025388)" pos2="(0,0)"/> <conn pos1="(90,.866025388)" pos2="(0,0)"/> <conn pos1="(30,.866025388)" pos2="(0,0)"/> <conn pos1="(330,.866025388)" pos2="(0,0)"/> </tile> <tile id=312 orientation="ew" code="1830-PRR" printed="" origin="1830" color="fixed" label="Philadephia" label_pos="(90,.3)" label_justify="c" label_font="A"> <junction type="1" revenue="10"> <annotation code="PRR_token"> </junction> <conn pos1="(0,.866025388)" pos2="(0,0)"/> <conn pos1="(180,.866025388)" pos2="(0,0)"/> <conn pos1="(0,.866025388)" pos2="(330,.5)" radius=-.5/> <conn pos1="(330,.5)" pos2="(270,.5)" radius=.5/> <conn pos1="(180,.866025388)" pos2="(210,.5)" radius=-.5/> <conn pos1="(210,.5)" pos2=("270,.5)" radius=.5/> </tile> Note that many of the parameters are defaulted when the import code can figure them out easily. We might also make aliases for the edges for position codes to avoid the normal value of sqrt(3), such as sideA etc. Also note that the tile database includes tiles from all games, and additional tables define which tiles are present in which games, and game-specific modifications (such as orientation changes, text labels, or different upgrade paths). If no game-specific upgrades are provided, the subset of upgrade possibilities that are present in the game are used. Additional work needs to be done to have location-specific upgrades in particular games, such as those who take normal tiles in early stages of the game but have special brown or gray upgrades. The map object maintains a connectivity graph between junctions, and incrementally updates it when tiles are laid or upgraded. It provides an interface to the route calculation code to find the reachable subgraph of all junctions reachable from a given companies tokens (taking into account blocking by tokens and special game rules like 1860 allowing one blocked junction to be run through). This would also be used by the user interface code for playing tiles and tokens (with some additional work for tile placement since you have to look at tiles you can lay from the frontiers of the reachability graph). The route calculation code would be responsible for figuring out which of those are reachable by a particular train according to the game's rules and computing the optimal route. Next I will send the object breakdown for tile rendering. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Brett L. <wak...@ea...> - 2005-10-09 02:40:13
|
Glad to see you're still around. I had wondered what happened to you. Yes, things are progressing fairly well. Though, there's still plenty left to do, in case you get some spare time. ;-) ---Brett. -----Original Message----- From: ia...@co... Sent: Oct 8, 2005 4:53 PM To: rai...@li... Subject: [Rails-devel] RE: Train ownership limits > 1. Train ownership limits (Brett Lentz) > I'm feeling the need to step away from the stupid repaint issues with the Map for a while. > > I was looking over the handling of train purchasing, and I'm not seeing any definitions in the XML for what the maximum number of trains a company can own. > > Has this not been defined yet? > > I'm pretty sure I can add it in without too much hassle, but I just want to make sure I'm not duplicating efforts before I do. > > I think just a maxNumTrainsOwned="4" property is all we need. > > Is there any 18xx game that bases the number of trains a company can own on something other than what trains are available? > > Before we go inextricably tying these things together in the code, that might be handy to know. ;-) > Train limits may vary both by company (or company type) and phase of the game. You probably have to encode a lookup table that takes company and pahse, and returns the train limit. Doing so in a fashion that can let you specify defaults/large ranges at one go may help those who have to produce definition files later. A general note on my long silence: I have been very busy with my job over the last six months, and have had no time for out-of-hours coding. I've been following the mailing list, and it sound like things are progressing well. Iain. ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ Rails-devel mailing list Rai...@li... https://lists.sourceforge.net/lists/listinfo/rails-devel |
From: <ia...@co...> - 2005-10-08 23:53:59
|
> 1. Train ownership limits (Brett Lentz) > I'm feeling the need to step away from the stupid repaint issues with the Map for a while. > > I was looking over the handling of train purchasing, and I'm not seeing any definitions in the XML for what the maximum number of trains a company can own. > > Has this not been defined yet? > > I'm pretty sure I can add it in without too much hassle, but I just want to make sure I'm not duplicating efforts before I do. > > I think just a maxNumTrainsOwned="4" property is all we need. > > Is there any 18xx game that bases the number of trains a company can own on something other than what trains are available? > > Before we go inextricably tying these things together in the code, that might be handy to know. ;-) > Train limits may vary both by company (or company type) and phase of the game. You probably have to encode a lookup table that takes company and pahse, and returns the train limit. Doing so in a fashion that can let you specify defaults/large ranges at one go may help those who have to produce definition files later. A general note on my long silence: I have been very busy with my job over the last six months, and have had no time for out-of-hours coding. I've been following the mailing list, and it sound like things are progressing well. Iain. |
From: Brett L. <wak...@ea...> - 2005-10-07 23:40:19
|
I'm feeling the need to step away from the stupid repaint issues with the Map for a while. I was looking over the handling of train purchasing, and I'm not seeing any definitions in the XML for what the maximum number of trains a company can own. Has this not been defined yet? I'm pretty sure I can add it in without too much hassle, but I just want to make sure I'm not duplicating efforts before I do. I think just a maxNumTrainsOwned="4" property is all we need. Is there any 18xx game that bases the number of trains a company can own on something other than what trains are available? Before we go inextricably tying these things together in the code, that might be handy to know. ;-) ---Brett. |
From: Brett L. <wak...@ea...> - 2005-10-04 23:18:41
|
> I have not yet removed Hex and BattleHex, but these are no longer > the real model since I introduced MapHex as the new model, a while ago. > So IMO these will have to disappear one day. Ok, please remove these as soon as you can. It's getting a little confusing in the higher level classes. ---Brett. |
From: Erik V. <eri...@hc...> - 2005-10-04 22:00:48
|
> Erik - Can you take a look at how neighbors and entrances are > assigned and make sure they're correct? I think we're at a > point where we need to verify this is working correctly. > Even some of the hex painting code relies on checking neighbor hexes. These are model properties and therefore belong to game.MapHex. I have renamed the old model attribute to dummyModel and introduced MapHex model as an attribute of GUIHex. Each MapHex now knows its neighbours (all assigned in MapManager). If you click on a hex, the neighbours are shown in the console (I have tested this for 1830 and 1856). Impassibility and forbidden red and grey hex sides are not yet done. The former is easy. The latter needs a peek into the tiles themselves. Entrances are also dependent on the tile internals. I will do those things later. First TileSet.xml and Tiles.xml needs be read and turned into objects. I have not yet removed Hex and BattleHex, but these are no longer the real model since I introduced MapHex as the new model, a while ago. So IMO these will have to disappear one day. > I'm also thinking that rather than having a seperate property > for TileID, we should use the Label property that's already > there. Any thoughts here? Label is currently not used (and will IMO disappear with Hex). We do have Name and Id, and these two can be different, as the same tile numbers are sometimes used for different tiles in different games. Name is what is displayed (perhaps Label would be a better name, but I consistently use Name in all object types to avoid confusion), whereas Id is the number in the Tile Dictionary and must therefore be unique. For instance, 59 and 1059 are Ids of different tiles, both labelled 59. Erik. |
From: Brett L. <wak...@ea...> - 2005-10-02 23:24:12
|
>Actually, I've found a better way of doing things. >In GUIHex, there's still the PaintOverlay code from Colossus. Ok. I've gotten tile drawing to work using the paintOverlay() methods in GUIHex. IMO, this looks a TON better. Tiles are being drawn and rotated properly. I've even gotten hex selection working (first click selects the hex, second and subsequent clicks rotate it). However, there's still quite a few painting bugs in the frame, especially related to the scrollbar. Erik - Can you take a look at how neighbors and entrances are assigned and make sure they're correct? I think we're at a point where we need to verify this is working correctly. Even some of the hex painting code relies on checking neighbor hexes. I'm also thinking that rather than having a seperate property for TileID, we should use the Label property that's already there. Any thoughts here? ---Brett. |