# MV3500 Simkit Viskit DIS Examples <!-- TODO rename directory SimkitViskitOpenDis7Examples --> <!-- https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/examples/src/SimkitOpenDis7Examples/README.md --> *Simkit* is a powerful tool for modeling and simulation that can be networked with other applications by integrating use of the Distributed Interactive Simulation (DIS) protocol. This directory includes simple Simkit programs which are getting modified to utilize [opendis7-java](https://savage.nps.edu/opendis7-java) libraries for PDU output. *Viskit* is a visual editor for authoring Simkit event graphs and simulation assemblies. Models are authored visually and saved as XML, which in turn generates Simkit Java code. This tool is newly restored and we are now building examples that integrate DIS capabilities with Simkit. ## Design Goals * Integrate code to share state changes from Simkit entities as DIS PDU messages. * Establish reference examples with corresponding output logs for test confirmation. * Build interoperability examples for distributed simulation using Simkit, Viskit, DIS and X3D. * Continue evolution of [Viskit tool](https://gitlab.nps.edu/Savage/viskit) and integrated builds. ## Example Programs Design outline: [SimkitSimpleDiscreteEventSimulationModelForDIS.docx](documentation/SimkitSimpleDiscreteEventSimulationModelForDIS.docx) a. ArrivalProcess, SimpleServer: provide a simple starter example * [ArrivalProcess.java](ArrivalProcess.java) * [SimpleServer.java](SimpleServer.java) and [SimpleServerComponentEventGraph.png](SimpleServerComponentEventGraph.png) * [run.RunSimpleServer.java](run/RunSimpleServer.java) and [run.RunSimpleServerLog.txt](run/RunSimpleServerLog.txt) * [ComputerAssignment 01 - The Arrival Process.docx](documentation/MV3302/ComputerAssignment 01 - The Arrival Process.docx) b. ArrivalProcessOpenDis7, SimpleServer: compatibly adds DIS output PDUs * [ArrivalProcessOpenDis7.java](ArrivalProcessOpenDis7.java) and [ArrivalProcessOpenDis7EventGraph.png](ArrivalProcessOpenDis7EventGraph.png) * [SimpleServer.java](SimpleServer.java) and [SimpleServerComponentEventGraph.png](SimpleServerComponentEventGraph.png) * [run.SimpleServerOpenDis7.java](run/SimpleServerOpenDis7.java) and [run.RunSimpleServerLog.txt](run/SimpleServerOpenDis7.txt) c. Two Crane Berths * [Ship.java](Ship.java) * [ShipArrivalProcess.java](ShipArrivalProcess.java) and [ShipArrivalProcessComponentEventGraph.png](ShipArrivalProcessComponentEventGraph.png) * [TwoCraneBerths.java](TwoCraneBerths.java) and [TwoCranesBerthComponentEventGraph.png](TwoCranesBerthComponentEventGraph.png) * [run.RunTwoCranesBerth.java](run/RunTwoCranesBerth.java) and [run.RunTwoCranesBerthLog.txt](run/RunTwoCranesBerthLog.txt) * [HarborWithTwoCranes.docx](documentation/HarborWithTwoCranes.docx) and [WrittenAssignment5Solution.docx](documentation/WrittenAssignment5Solution.docx) * [ComputerAssignment 05 - Two Crane Berths.docx](documentation/MV3302/ComputerAssignment 05 - Two Crane Berths.docx) ## References * Buss, Arnold, [Component Based Simulation Modeling with Simkit](documentation/BussComponentBasedSimulationModelingSimkitWintersim2002.pdf), Proceedings of the 2002 Winter Simulation Conference. * [Discrete Event Simulation Modeling](documentation/Discrete Event Simulation Modeling.pdf) manual for Simkit * [Github: Simkit](https://github.com/ahbuss/Simkit) * https://gitlab.nps.edu/abuss/MV3302ClassCode * [MV3302: Introduction to Discrete Event Simulation Modeling (SP22_1_AB)](https://cle.nps.edu/portal/site/7c6b3539-58e4-4640-9551-ab03f8629e3c) in NPS Sakai * [MV3302 > Resources > Handouts](https://cle.nps.edu/portal/site/7c6b3539-58e4-4640-9551-ab03f8629e3c/tool/7f0dea2b-fa42-4bed-8c38-c67ce9f56582?panel=Main) * [Simkit Quick Reference](documentation/SimkitQuickReference.docx) * [Viskit demo video](https://savage.nps.edu/videos/Viskit-demo-2023MAR4.mp4) and [info](https://savage.nps.edu/videos/Viskit-demo-info-2023MAR4.mp4) ## TODO a. Refactor [OpenDis7Examples.ExampleSimulationProgram.java](../OpenDis7Examples/ExampleSimulationProgram.java) to extract re-usable DIS network parameters, setup and teardown as a convenient superclass. b. Add additional PDU outputs to these examples.