I was sitting here trying to come up with a topic for a blog post. I could post about how the Windows Phone project is coming along and how cool it was to add a splash screen that says “Microsoft” on it. But having Microsoft use my app internally might not be that interesting to other people. I could post about regular work (my day job) but I’m writing blog posts because it is slow at the moment. I am fixing some old bugs while waiting for our hardware design consultants to come back from vacation and fix a catastrophic firmware bug.
What I decided was to make some comments about the projects that I have worked on over the years that are totally unfinished and what I thought would be a great goal with those projects. Of course some of the goals are completely unreachable, hence the use of the word “Dreaming…” in the title.
My vision for the train game was outlined in other posts specific to that topic. What I never really talked about was how cool it would be to have a real game and what that game would be like.
My vision was to have a 3D game where the player would be given a realistic landscape with realistic distances to it. Initially, a 100 mile long stretch of mountains with some large valleys would be cool. There would probably be a train depot on one edge of the playing area that was a depot for a larger computer controlled railroad. The player would see that there is a mine or other resource and build a railroad to connect it to the existing depot. What happens with materials from the mine after that would not matter.
Since this would be a realistic simulation and not a cute game, the railroad building process would be a big deal to the player. They would have a limited budget and would need to build a low cost route while also having that route be cost-effective in the long run. Build a railroad that is flat and long with a lot of tunnels and bridges might be cost-effective to run but would be too expensive to build. Build steep and straight would be less expensive to build but large trains burning a lot of fuel would be too expensive to run.
Just picking a route that would work well in the long run would be difficult. Add to that the need to add passing tracks and turntables or wyes for turning trains and the whole building process would be interesting.
Once the railroad is planned well in a certain area, the player could start the building process and little dudes with tools would work on building the railroad. Once the whole thing is being built, the game could be sped up to make the process go quicker. Watching a railroad being built in real time might be interesting for a few weeks but there is no reason to go in real time except when the player is designing things or making fine changes to the railroad business.
I’ll skip the issues with buying rolling stock for a moment. Once the player has a locomotive and some cars, they would create a train schedule. This is a schedule for the locomotive, not for the entire train. The locomotive could travel to the other end of the line and drop off a few ore cars. It would then pick up full ore cars and take them to the depot. While it is en route, the dropped off empty cars would be getting filled at the mine assuming that the mine is working well and getting good ore. The locomotive could then repeat the process over and over. The important thing here is that the empty cars would need to be taken to the mine and would not magically appear when needed.
The player could get a freebie from the game by letting them place the locomotive and cars in their starting positions magically. After that, cars can only be moved by the locomotive. How then would the player buy a few new ore cars and work them into the schedule? I am not sure yet. In this scenario, they could magically appear but only at a certain location near the other railroad mainline track and depot where the cars would arrive anyhow. What if there is no other railroad?
Anyhow, that is the basic gameplay. Build a railroad in a realistic manner and run it in a realistic manner. Let the player control time so that they could see the train traveling the 100 mile route over the course of a day or watching it take a few minutes or even seconds.
A railroad might also be built in a setting where there are just a few towns and people and their good to move around. There would be no outside railroad to take stuff off the play field. there are lots of possibilities that all work within the realistic boundaries that I have set.
One other interesting thing that would come into play is how multiple locomotives could be used to share the workload of moving the cars around. Since there is no concept of a train schedule, one loco could drop off cars and the other could pick them up. A train could even have a different schedule for different days of the week so that less common car movements didn’t happen as often as the common movements.
The Linkage program is much closer to a reality than the train game. The Linkage program is a working program that needs very few additional features to make it a real product.
Aside from adding some different types of parts to the program for creating more complex mechanisms, the program also needs a few new features to make it a real design program.
For adding new parts, the things that come to mind are gears and chains and other type of input parts. For instance, there is no way to have a rotating element in the mechanism that is not fixed to the “ground.” Links can oscillate but cannot continue to rotate out at the end of some other moving link. The problem with this is that I have not planned for associating a connector or movement with a specific link. Any link connected to a rotating input on the “ground” will rotate while the ground stays fixed. For as rotating input that is on a link that is moving, it is not at all clear which link is the motor and which links are connected to the output shaft. Maybe that is not an issue since the simulator would use whichever link is fixed in place first as the link that is not rotated. All other links attached to that connector would be rotated.
But on to other things. A chain might connect a rotating input in one place to a rotating connector elsewhere. this could be faked by just setting the rotation speed of various connectors to appropriate values as if they were all connected to a single input. It’s not great if designing this for real world mechanisms because there is not way to show if there is a chain, drive shaft, gears, or another motor, controlling the various parts. Still, there might be a way to do this now. I’ll give it some thought.
There definitely needs to be a way to specify the length of various parts and then make it so that the length cannot be changed during editing. A real world mechanism might need to fit within some other large machine or location and the locations of the various parts and their sizes and shapes may have to conform to certain external requirements. The program is not at all good for this type of real world limitation.
I also want to be able to display and print a parts list that includes the dimensions of the parts so that someone could machine real objects to do the work of the virtual mechanism.