160 likes | 244 Views
Buffalo Urban Development Simulator (BUDS). “SimCity ”-like simulation for downtown and waterfront development
E N D
Buffalo Urban Development Simulator(BUDS) • “SimCity”-like simulation for downtown and waterfront development • Produce a game, like SimCity, in which Buffalo area residents can attempt to design construction and architectural restoration projects in Buffalo. The game would have to include: - the ability to design building, street, traffic, etc. icons - lace the icons and pre-constructed maps - run simulations for cost, environmental and traffic impact, decay, etc.
Users • Urban planners: • Professional environment • More control needed • Hobbyists: • Relaxed, “Entertainment” environment • More aesthetics less specifics • Crowdsourcing: • Hold a contest where anyone can submit a design. The winner’s design is then adapted from the hobbyist layout to the professional environment. • Provides Numerous Ideas and User/Customer involvement
Functionality • Map changes in 2 ways: • Input from user • Formulas that advance time • Traffic: • Cannot keep track of every persons location • Instead, buildings have “flux” values • Higher = likely source of traffic, lower = likely destination • Changes as cars enter or leave location, as well as with time of day • Other things to account for: • Construction • Weather • Save/Load functionality
Future Plans • CAD-integration: • Input CAD files for specific buildings to add. • Users can see buildings that they have designed as they would look in real life • Zoning/Building Code: • Include relevant zoning/building code for specific areas • Allows for better estimates of time and cost as well as restrictions on where and what can be built • Expansion: • Including additional locations, larger maps and completely different cities.
Buffalo Urban Development Simulator Detailed Default Screen Date + Time InfoPanel Mini Map Simulation Speed Control Save/Load Commands 2D/3D Toggle Menus Exit Button Speed: 2x ▌▌-+ Buildings Roads Options 2D/3D 12:03:49 PM July 15th , 2012 Buffalo Load Exit Population:300,000 Save Weather: Sunny 70F
Buffalo Urban Development Simulator Road Selected ScreenShot Main St Speed: 2x ▌▌-+ Extend 2D/3D 12:03:49 PM July 15th , 2012 Close Road Work Two Way Single Lane Speed Limit:35 Actual:35 Back Length :8 Congestion: 0
Buffalo Urban Development Simulator Building Selected Screenshot Joe’s Diner Speed: 2x ▌▌-+ 2D/3D Renovate Close Expand 12:03:49 PM July 15th , 2012 Store Edit Back Flux:0 Demolish Height:3 Width:6 Length:4
Buffalo Urban Development Simulator Buildings Menu Screenshot Buildings Speed: 2x ▌▌-+ Workplace Residential Store 2D/3D 12:03:49 PM July 15th , 2012 Buffalo More Back Population:300,000 Special Event Weather: Sunny 70F
Buffalo Urban Development Simulator 2D Map Mode Speed: 2x ▌▌-+ Buildings Roads Options 2D/3D 12:03:49 PM July 15th , 2012 Buffalo Load Exit Population:300,000 Save Weather: Sunny 70F
Traffic • Creation • Traffic created at Buildings • Buildings have a “flux” value that determines how much traffic leaves/enters the building. • Roads: • Have a weighted value based on congestion and speed limit • Factors like construction and delays affect congestion • Routes: • Traffic paths(including destination) are made at Traffic Creation • Paths are maintained unless a road on the initial path gets closed. The path is then recalculated
Traffic Pathing Algorithm Idea When Traffic is being created, it gets a destination from the Buildings database, where is chooses at random from buildings with high flux values. The roads have weighted values based on their actual speeds(value derived from the speed limit and the congestion of the road). We use weighted values for roads and treat them as edges and the Buildings(Creation and Destination) as vertexes as well as road intersections. We then use a modified form of Dijkstra’s algorithm to find the shortest path between the starting location and the destination. In the case where a road get closed while traffic is inbetween buildings, a new path is found from the nearest intersection and the destination.
Dijkstra’s Algorithm 1)Assign to every node a tentative distance value: set it to zero for our initial node and to infinity for all other nodes. 2)Mark all nodes unvisited. Set the initial node as current. Create a set of the unvisited nodes called the unvisited set consisting of all the nodes except the initial node. 3)For the current node, consider all of its unvisited neighbors and calculate their tentative distances. For example, if the current node A is marked with a tentative distance of 6, and the edge connecting it with a neighbor B has length 2, then the distance to B (through A) will be 6+2=8. If this distance is less than the previously recorded tentative distance of B, then overwrite that distance. Even though a neighbor has been examined, it is not marked as "visited" at this time, and it remains in the unvisited set. 4)When we are done considering all of the neighbors of the current node, mark the current node as visited and remove it from the unvisited set. A visited node will never be checked again; its distance recorded now is final and minimal. 5)If the destination node has been marked visited (when planning a route between two specific nodes) or if the smallest tentative distance among the nodes in the unvisited set is infinity (when planning a complete traversal), then stop. The algorithm has finished. 6)Set the unvisited node marked with the smallest tentative distance as the next "current node" and go back to step 3.
Integration Thread Description An integration thread is the foundation of the system to which it belongs. It is the essential functionality that the rest of the system requires in order to run smoothly. Once an integration thread is developed, any other functionality can be built and easily added onto the rest of the system. We have identified an integration thread for BUDS. The essential functionality of this system is to be able to view the map, to interact with it by adding and removing buildings and roads, and to have traffic flow along the roads as time passes.
Integration Thread Description cont’d Any of the other functionality can easily be added to the program with this in place. More advanced traffic management algorithms can be inserted into their modules. Any time-dependent functionality such as construction or weather can be designed and added since the necessary information is already present along with the aspect of time flowing. Buttons for the added functionality can be added into the GUI, and other settings can be made available as the functionality they modify is added.
References BUDS Phase 1-http://team43buds.weebly.com/phase-1.html BUDS Phase 2-http://team43buds.weebly.com/phase-2.html BUDS Phase 3-http://team43buds.weebly.com/phase-3.html Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001). "Section 24.3: Dijkstra's algorithm". Introduction to Algorithms (Second ed.). MIT Press and McGraw-Hill. pp. 595–601. ISBN 0-262-03293-7. Picture in User Interfaces Screen Shots- http://community.simtropolis.com/topic/12825-atheneedocumentary-of-a-city-by-paletexan/page__st__60 Mini-Map in User Interfaces Screen Shot- https://maps.google.com/