Skip to content
Snippets Groups Projects
Commit 6f1e0eb7 authored by Simon32220's avatar Simon32220
Browse files

Merge origin/master

# Conflicts:
#	assignments/nbproject/project.properties
parents 0712611f 9f4a8da7
No related branches found
No related tags found
No related merge requests found
Showing
with 1650 additions and 1091 deletions
......@@ -70,8 +70,8 @@ javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=20
javac.target=20
javac.source=22
javac.target=22
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
......
package MV3500Cohort2024JulySeptember.homework2.Timberlake;
import java.net.ServerSocket;
import java.net.Socket;
/**
* This server program works a bit differently by creating and dispatching a
* new thread to handle multiple incoming socket connections, one after another, all running in parallel.
* This advanced technique is often used in high=performance high=capacity server programs.
*
* @see Client_HW2
* @see GameHandler
*
* @see <a href="../../../src/TcpExamples/TcpExample4TerminalLog.txt" target="blank">TcpExample4TerminalLog.txt</a>
* @see <a href="../../../src/TcpExamples/TcpExample4SequenceDiagram.png" target="blank">TcpExample4SequenceDiagram.png</a>
* @see <a href="../../../src/TcpExamples/TcpExample4SequenceSketch.png" target="blank">TcpExample4SequenceSketch.png</a>
*
* @author Don McGregor
* @author Don Brutzman
* @author MV3500 class
* @author Jack Timberlake
*/
public class Server_HW2 {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
// Create a socket to listen on port 9876
serverSocket = new ServerSocket(9876);
System.out.println("Server has started, waiting for client...");
while (true) {
// Accept client connection
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected");
// Create GameHandler to handle client
GameHandler gameHandler = new GameHandler(clientSocket);
// Create new thread to handle the game
Thread thread = new Thread(gameHandler);
thread.start();
}
} catch (Exception e) {
e.printStackTrace(); // Print any exceptions that occur
} finally {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close(); // Close the server socket to release resources
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package MV3500Cohort2024JulySeptember.homework2.Timberlake;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* This server program works a bit differently by creating and dispatching a
* new thread to handle multiple incoming socket connections, one after another, all running in parallel.
* This advanced technique is often used in high=performance high=capacity server programs.
*
* @see Client_HW2
* @see GameHandler
*
* @see <a href="../../../src/TcpExamples/TcpExample4TerminalLog.txt" target="blank">TcpExample4TerminalLog.txt</a>
* @see <a href="../../../src/TcpExamples/TcpExample4SequenceDiagram.png" target="blank">TcpExample4SequenceDiagram.png</a>
* @see <a href="../../../src/TcpExamples/TcpExample4SequenceSketch.png" target="blank">TcpExample4SequenceSketch.png</a>
*
* @author Don McGregor
* @author Don Brutzman
* @author MV3500 class
* @author Jack Timberlake
*/
public class Server_HW2 {
/** The main method launches the program from the command line, no parameters needed.
* @param args command-line arguments, none needed */
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
// Create a socket to listen on port 9876
serverSocket = new ServerSocket(9876);
System.out.println("Server has started, waiting for client...");
while (true) {
// Accept client connection
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected");
// Create GameHandler to handle client
GameHandler gameHandler = new GameHandler(clientSocket);
// Create new thread to handle the game
Thread thread = new Thread(gameHandler);
thread.start();
}
} catch (IOException e) {
e.printStackTrace(); // Print any exceptions that occur
} finally {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close(); // Close the server socket to release resources
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
## Homework 3: Example Simulation Recording using OpenDIS Network Streams
<!-- Viewable at https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/assignments/src/MV3500Cohort2024JulySeptember/homework3/README.md -->
### Assignment
1. Adapt the functionality for [OpenDIS ExampleSimulationProgram](../../../../examples/src/OpenDis7Examples/ExampleSimulationProgram.java), modifying provided code
2. Experiment with the enumeration values that set up each entity and PDU. What works for you? What makes sense for your future work?
3. Adapt or replace the UML diagrams to describe what you have going on.
4. Record, save and replay your result stream using [PduRecorder](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/utilities/stream/PduRecorder.html) or [Wireshark](https://www.wireshark.org)
* see local [assignments/src/pduLog](../../../pduLog) subdirectory for latest opendis log files
* Coming soon, we will also (again have) [X3D-Edit](https://savage.nps.edu/X3D-Edit) for DIS stream recording/replay
5. Observe good-practice conventions in the [assignments README](../../../README.md) and [current-course README](../README.md) instructions.
This assignment presents a Problem Prototyping opportunity.
While some minimal functionality is expected, the general outline of
a networking problem and proposed solution holds great interest.
Think of it as warmup preparation for your future work.
This is also a freeplay opportunity.
You have the option to pick one or more of the provided course example programs
and adapt the source to demonstrate a new client-server handshake protocol of interest.
Be sure to provide a rationale that justifies why the networking choices you made
(TCP/UDP, unicast/multicast, etc.) are the best for the problem you are addressing.
You may find that the prior [homework2 README](../homework2/README.md) still provides
helpful details on what specific deliverables are expected in each homework assignment.
Team efforts are encouraged, though if you choose a team approach be sure to justify why.
This is a good warmup prior to final projects. Have fun with Java networking!
### Prior Assignment, August 2019
In 2019, students worked together on a single project to check wireless multicast connectivity recently deployed on NPS campus.
See their experimental results in the [NPS Multicast Connectivity Report](../../MV3500Cohort2019JulySeptember/homework3).
This program runs a simulation between two entites. One entity is initialized at
(0,0,0) and the other is randomly placed. The hunter entity moves towards the prey
entity until it is in range. When in range the hunter attempts to shoot the prey.
If successful, the simulation ends. The prey entity constantly attemps to move away
from the hunter.
\ No newline at end of file
......@@ -21,9 +21,7 @@ import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
/** The purpose of this inheritable class is to provide an easily modifiable
* example simulation program that includes DIS-capable entities performing
* tasks of interest, and then reporting activity via PDUs to the network.
/** Modification of the example program; a simple user interactive simulation of navigating a minefield.
* Default program initialization includes PDU recording turned on by default.
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt" target="_blank">ExampleSimulationProgramLog.txt</a>
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/ExampleSimulationProgramPduCaptureLog.dislog" target="_blank">ExampleSimulationProgramPduCaptureLog.dislog</a>
......
## Homework 3: Example Simulation Recording using OpenDIS Network Streams
<!-- Viewable at https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/assignments/src/MV3500Cohort2024JulySeptember/homework3/README.md -->
### Assignment
1. Adapt the functionality for [OpenDIS ExampleSimulationProgram](../../../../examples/src/OpenDis7Examples/ExampleSimulationProgram.java), modifying provided code
2. Experiment with the enumeration values that set up each entity and PDU. What works for you? What makes sense for your future work?
I added movement to the simulation.
3. Adapt or replace the UML diagrams to describe what you have going on.
4. Record, save and replay your result stream using [PduRecorder](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/utilities/stream/PduRecorder.html) or [Wireshark](https://www.wireshark.org)
* see local [assignments/src/pduLog](../../../pduLog) subdirectory for latest opendis log files
* Coming soon, we will also (again have) [X3D-Edit](https://savage.nps.edu/X3D-Edit) for DIS stream recording/replay
5. Observe good-practice conventions in the [assignments README](../../../README.md) and [current-course README](../README.md) instructions.
This assignment presents a Problem Prototyping opportunity.
While some minimal functionality is expected, the general outline of
a networking problem and proposed solution holds great interest.
Think of it as warmup preparation for your future work.
For assignment 3 I implemented random movement.
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments" target="_blank">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful" target="_blank">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java" target="_blank">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2024JulySeptember.homework3.Matiski;
......@@ -17,7 +17,7 @@ public class ExampleSimulationProgram {
// Constants for the Battleship game
private static final int GRID_SIZE = 10; // 10x10 grid for Battleship
private static final int MAX_TURNS = 100; // Limit turns to avoid infinite games
private static final int MAX_TURNS = 200; // Limit turns to avoid infinite games
// Grids for each player
private char[][] player1Grid = new char[GRID_SIZE][GRID_SIZE];
......@@ -32,11 +32,29 @@ public class ExampleSimulationProgram {
// DIS utilities
private String descriptor = this.getClass().getSimpleName();
/**
* DIS Channel to output to
*/
protected DisChannel disChannel;
protected PduFactory pduFactory;
protected CommentPdu gridStatusPdu;
protected FirePdu firePduPlayer1;
protected FirePdu firePduPlayer2;
/**
* PDU generator
*/
protected PduFactory pduFactory; //
/**
* Grid Status updating PDU
*/
protected CommentPdu gridStatusPdu; //
/**
* Player 1 PDU
*/
protected FirePdu firePduPlayer1; //
/**
* Player 2 PDU
*/
protected FirePdu firePduPlayer2; //
/**
* Munition Descriptor
*/
protected MunitionDescriptor munitionDescriptor1 = new MunitionDescriptor();
// Simulation time settings
......
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.desc=Example programs provided as part of NPS course Networked Graphics MV3500. This course is an introduction to network communications in simulation applications. Topics include an introduction to the TCP/IP protocol stack; TCP/IP socket communications, including TCP, UDP, and multicast; and protocol design issues, with emphasis on Distributed Interactive Simulation (DIS) Protocol and High Level Architecture (HLA). Course emphasis is on creation and testing of network programming network code and web-browser applications.
application.homepage=https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/examples
application.splash=..\\..\\NetworkedGraphicsMV3500\\documentation\\images\\OpenDisSurferDude.png
application.title=NPS Networked Graphics MV3500 examples
application.vendor=Don Brutzman
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.modulepath=\
${run.modulepath}
debug.test.classpath=\
${run.test.classpath}
debug.test.modulepath=\
${run.test.modulepath}
# Files in build.classes.dir which should be excluded from distribution jar
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.name=Networked_Graphics_MV3500_examples
dist.jar=${dist.dir}/${dist.name}.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
project.licensePath=../license.txt
viskit.proj.dir=ViskitOpenDis7Examples
viskit.proj.lib.dir=src/${viskit.proj.dir}/lib
opendis.helper=SimkitOpenDis7Examples.run.OpenDisHelper
excludes=ViskitOpenDis7Examples/
file.reference.dis-enums-1.3.jar=../lib/dis-enums-1.3.jar
file.reference.opendis7-full.jar=../lib/opendis7-full.jar
file.reference.open-dis_4.16.jar=../lib/open-dis_4.16.jar
file.reference.simkit-doc.zip=../lib/simkit-doc.zip
file.reference.simkit-src.zip=../lib/simkit-src.zip
file.reference.simkit.jar=../lib/simkit.jar
#file.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-classes.jar
#file.reference.opendis7-pdus-classes.jar=../lib/opendis7-pdus-classes.jar
includes=**/*.java
jar.compress=false
javac.classpath=\
${file.reference.opendis7-full.jar}:\
${file.reference.open-dis_4.16.jar}:\
${file.reference.dis-enums-1.3.jar}:\
${file.reference.simkit.jar}:\
${file.reference.simkit-doc.zip}:\
${file.reference.simkit-src.zip}
# ${file.reference.opendis7-enumerations-classes.jar}:\
# ${file.reference.opendis7-pdus-classes.jar}:\
# Space-separated list of extra javac options
javac.compilerargs=-Xlint:deprecation -Xlint:unchecked
javac.deprecation=false
javac.external.vm=true
javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=21
javac.target=21
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=-header "NPS Networked Graphics MV3500 Examples"
javadoc.author=true
javadoc.encoding=${source.encoding}
javadoc.html5=false
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
#javadoc.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-javadoc.jar
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=MV3500 Examples
jlink.launcher=false
jlink.launcher.name=Networked_Graphics_MV3500_examples
main.class=TcpExamples.TcpExample1Telnet
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project.
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=
run.modulepath=\
${javac.modulepath}
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
run.test.modulepath=\
${javac.test.modulepath}
source.encoding=UTF-8
#source.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-source.jar
src.dir=src
src.src.dir=otherProjects\\DisDemo\\src
src.src2.dir=otherProjects\\DisShooting\\src
src.src3.dir=otherProjects\\WebSocketGateway\\src
#src.src4.dir=otherProjects\\BasicServletDemo\\src
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.desc=Example programs provided as part of NPS course Networked Graphics MV3500. This course is an introduction to network communications in simulation applications. Topics include an introduction to the TCP/IP protocol stack; TCP/IP socket communications, including TCP, UDP, and multicast; and protocol design issues, with emphasis on Distributed Interactive Simulation (DIS) Protocol and High Level Architecture (HLA). Course emphasis is on creation and testing of network programming network code and web-browser applications.
application.homepage=https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/examples
application.splash=..\\..\\NetworkedGraphicsMV3500\\documentation\\images\\OpenDisSurferDude.png
application.title=NPS Networked Graphics MV3500 examples
application.vendor=Don Brutzman
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.modulepath=\
${run.modulepath}
debug.test.classpath=\
${run.test.classpath}
debug.test.modulepath=\
${run.test.modulepath}
# Files in build.classes.dir which should be excluded from distribution jar
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.name=Networked_Graphics_MV3500_examples
dist.jar=${dist.dir}/${dist.name}.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
project.licensePath=../license.txt
viskit.proj.dir=ViskitOpenDis7Examples
viskit.proj.lib.dir=src/${viskit.proj.dir}/lib
opendis.helper=SimkitOpenDis7Examples.run.OpenDisHelper
excludes=ViskitOpenDis7Examples/
file.reference.dis-enums-1.3.jar=../lib/dis-enums-1.3.jar
file.reference.opendis7-full.jar=../lib/opendis7-full.jar
file.reference.open-dis_4.16.jar=../lib/open-dis_4.16.jar
file.reference.simkit-doc.zip=../lib/simkit-doc.zip
file.reference.simkit-src.zip=../lib/simkit-src.zip
file.reference.simkit.jar=../lib/simkit.jar
#file.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-classes.jar
#file.reference.opendis7-pdus-classes.jar=../lib/opendis7-pdus-classes.jar
includes=**/*.java
jar.compress=false
javac.classpath=\
${file.reference.opendis7-full.jar}:\
${file.reference.open-dis_4.16.jar}:\
${file.reference.dis-enums-1.3.jar}:\
${file.reference.simkit.jar}:\
${file.reference.simkit-doc.zip}:\
${file.reference.simkit-src.zip}
# ${file.reference.opendis7-enumerations-classes.jar}:\
# ${file.reference.opendis7-pdus-classes.jar}:\
# Space-separated list of extra javac options
javac.compilerargs=-Xlint:deprecation -Xlint:unchecked
javac.deprecation=false
javac.external.vm=true
javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=22
javac.target=22
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=-header "NPS Networked Graphics MV3500 Examples"
javadoc.author=true
javadoc.encoding=${source.encoding}
javadoc.html5=false
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
#javadoc.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-javadoc.jar
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=MV3500 Examples
jlink.launcher=false
jlink.launcher.name=Networked_Graphics_MV3500_examples
main.class=TcpExamples.TcpExample1Telnet
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project.
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=
run.modulepath=\
${javac.modulepath}
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
run.test.modulepath=\
${javac.test.modulepath}
source.encoding=UTF-8
#source.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-source.jar
src.dir=src
src.src.dir=otherProjects\\DisDemo\\src
src.src2.dir=otherProjects\\DisShooting\\src
src.src3.dir=otherProjects\\WebSocketGateway\\src
#src.src4.dir=otherProjects\\BasicServletDemo\\src
This diff is collapsed.
# Specification Documents, IEEE and SISO
# Distributed Interactive Simulation (DIS) Protocol
<!-- To properly view Markdown, go the the online web page:
https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/specifications/README.md -->
*Distributed Interactive Simulation (DIS) is an
[Institute of Electrical and Electronics Engineers (IEEE)](https://www.ieee.org) standard for conducting
real-time platform-level wargaming across multiple host computers and is used worldwide,
especially by military organizations but also by other agencies such as those involved in
space exploration and medicine.*
* Wikipedia: [Distributed Interactive Simulation (DIS)](https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation) IEEE Standard and [RPR FOM](https://en.wikipedia.org/wiki/RPR_FOM)
* [Simulation Interoperability Standards Organization (SISO)](https://www.sisostandards.org): "Simulation Interoperability and Reuse through Standards"
* SISO [DIS / RPR FOM PSG - Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model](https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx) Product Support Group (PSG)
* SISO [Standards Data Files](https://www.sisostandards.org/Schemas.aspx) including various schemas
## Working-Group Resources
### DIS/RPR FOM Product Support Group <a href="https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* "The Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model (DIS / RPR FOM) Product Support Group (PSG) is a permanent support group chartered by the SISO Standards Activity Committee to support multiple DIS-related products."
* [Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model (DIS / RPR FOM) Product Support Group (PSG)](https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx)
* [SISO Digital Library](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [DIS Introduction and Briefings](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [IEEE 1278 Bibliography Material](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [DIS PDU data structures](IeeeDisPduColorFigures.pdf)
** [Compressed DIS](2019-SIW-Presentation-039_CompressedDis.pdf) overview, Lance Call, Simulation Interoperability Workshop (SIW), Orlando Florida, February 2019.
Specification download links follow. For free access, IEEE standards must be downloaded manually while within NPS campus or firewall.
## Standards Documents
An IEEEExplore account is required to access or purchase these standards documents. Meanwhile,
NPS personnel can obtain the following standards without charge when accessing via nps.edu networks.
### 1278.1-2012. IEEE Standard for Distributed Interactive Simulation (DIS) - Application Protocols <a href="https://ieeexplore.ieee.org/document/6387564" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/6387564
* *Abstract.*
Data messages, known as Protocol Data Units (PDUs), that are exchanged on a network among simulation applications are defined. These PDUs are for interactions that take place within specified domains called protocol families, which include Entity Information/ Interaction, Warfare, Logistics, Simulation Management, Distributed Emission Regeneration, Radio Communications, Entity Management, Minefield, Synthetic Environment, Simulation Management with Reliability, Information Operations, Live Entity Information/Interaction, and Non-Real-Time protocol.
* Date of Publication: 19 Dec. 2012
* Electronic ISBN: 978-0-7381-7310-8
* Also [IEEE Std 1278.1-2012 (Revision of IEEE Std 1278.1-1995)](https://standards.ieee.org/findstds/standard/1278.1-2012.html)
---
### 1278.2-2015. IEEE Standard for Distributed Interactive Simulation (DIS) - Communication Services and Profiles <a href="https://ieeexplore.ieee.org/document/7459689" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/7459689
* *Abstract.*
Communication services to support information exchange between simulation applications participating in the distributed interactive simulation (DIS) environment are defined. These communication services describe a connectionless information transfer that supports real-time, as well as non-real-time, exchange. Several communication profiles specifying communication services are provided.
* *Scope.*
This standard establishes the requirements for the communication services to be used in a DIS simulation. This standard supports IEEE Std 1278.1.
* *Purpose.*
The purpose of this standard is to establish requirements for communication subsystems that support DIS applications. This standard provides service requirements and associated profiles that can be individually selected to meet specific DIS system operational requirements.
* Date of Publication: 6 Nov. 2015
* Electronic ISBN: 978-0-7381-9909-2
---
### 1278.3-1996. IEEE Recommended Practice for Distributed Interactive Simulation - Exercise Management and Feedback <a href="https://ieeexplore.ieee.org/document/587529" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/587529
* *Abstract.*
Guidelines are established for exercise management and feedback in distributed interactive simulation (DIS) exercises. Guidance is provided to sponsors, providers and supporters of DIS-compliant systems and exercises as well as to developers of DIS exercise management and feedback stations. The activities of the organizations involved in a DIS exercise and the top-level processes used to accomplish those activities are addressed. The functional requirements of the exercise management and feedback process are also addressed. This standard is one of a series of standards developed for DIS to assure interoperability between dissimilar simulations for currently installed and future simulations developed by different organizations.
* Date of Publication 1997, Reaffirmed 2002.
---
### 4. 1278.4-1997. IEEE Recommended Practice for Distributed Interactive Simulation - Verification, Validation, and Accreditation <a href="https://ieeexplore.ieee.org/document/8685803" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/8685803
* *Abstract.*
Guidelines are established for the verification, validation, and accreditation (VV&A) of distributed interactive simulation (DIS) exercises. How-to procedures for planning and conducting DIS exercise VV&A are provided. Intended for use in conjunction with IEEE Std 1278.3-1996, this recommended practice presents data flow and connectivity for all proposed verification and validation activities and provides rationale and justification for each step. VV&A guidance is provided to exercise users/sponsors and developers.
* Date of Publication: 10 Sept. 2013
* Electronic ISBN: 978-0-7381-6281-2
---
### 5. SISO-REF-010-2023: Reference for Enumerations for Simulation Interoperability <a href="https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx (scroll down to bottom of page)
* *Abstract.*
SISO-REF-010 specifies numerical values and associated definitions for fields that are identified as enumerations in SISO Standards Products and SISO-sponsored standards published by IEEE for High Level Architecture (HLA) and Distributed Interactive Simulation (DIS). Enumerations for simulations may be applied in other architectures, such as the Test and Training Enabling Architecture (TENA).
* Resources include [SISO-REF-010-2023 distribution](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=46171),
[enumerations PDF](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=46172),
[Operations Manual (OPMAN)](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=47284) and
[latest version of all resources](https://svn.code.sf.net/p/esitools/code/Release_Information/Current_DRAFT)
---
### 6. SISO-STD-001-2015: Standard for Guidance, Rationale, and Interoperability Modalities (GRIM) for the Real-time Platform Reference Federation Object Model (RPR FOM) <a href="https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* https://www.sisostandards.org/ProductsPublications/Standards/SISOStandards.aspx (scroll down near bottom of page)
* *Abstract.*
SISO-STD-001-2015 encapsulates guidance in the use of the RPR FOM. It provides descriptions of FOM classes and data types and the relationship between Distributed Interactive Simulation (DIS) and the High Level Architecture (HLA)-based RPR FOM, as well as rules for accomplishing specific distributed simulation tasks.
* Version 2.0 (10 Aug 2015)
---
# Specification Documents, IEEE and SISO
# Distributed Interactive Simulation (DIS) Protocol
<!-- To properly view Markdown, go the the online web page:
https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/specifications/README.md -->
*Distributed Interactive Simulation (DIS) is an
[Institute of Electrical and Electronics Engineers (IEEE)](https://www.ieee.org) standard for conducting
real-time platform-level wargaming across multiple host computers and is used worldwide,
especially by military organizations but also by other agencies such as those involved in
space exploration and medicine.*
* Wikipedia: [Distributed Interactive Simulation (DIS)](https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation) IEEE Standard and [RPR FOM](https://en.wikipedia.org/wiki/RPR_FOM)
* [Simulation Interoperability Standards Organization (SISO)](https://www.sisostandards.org): "Simulation Interoperability and Reuse through Standards"
* SISO [DIS / RPR FOM PSG - Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model](https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx) Product Support Group (PSG)
* SISO [Standards Data Files](https://www.sisostandards.org/Schemas.aspx) including various schemas
## Working-Group Resources
### C2SIM PSG/PDG - Command and Control Systems - Simulationation Systems Interoperability (C2SIM)
* [Library](https://sisostandards.connectedcommunity.org/communities/community-home/librarydocuments?communitykey=e127ad67-6994-466f-808b-e7a1719c2478&LibraryFolderKey=&DefaultView=)
### DIS/RPR FOM Product Support Group <a href="https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* "The Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model (DIS / RPR FOM) Product Support Group (PSG) is a permanent support group chartered by the SISO Standards Activity Committee to support multiple DIS-related products."
* [Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model (DIS / RPR FOM) Product Support Group (PSG)](https://www.sisostandards.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx)
* [SISO Digital Library](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [DIS Introduction and Briefings](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [IEEE 1278 Bibliography Material](https://www.sisostandards.org/Default.aspx?tabid=105&EntryId=31596)
** [DIS PDU data structures](IeeeDisPduColorFigures.pdf)
** [Compressed DIS](2019-SIW-Presentation-039_CompressedDis.pdf) overview, Lance Call, Simulation Interoperability Workshop (SIW), Orlando Florida, February 2019.
** DISv8 Library](https://sisostandards.connectedcommunity.org/communities/community-home/librarydocuments?communitykey=f63434dd-df8c-4b41-892c-f03f0a2ea4bb&LibraryFolderKey=&DefaultView=)
Specification download links follow. For free access, IEEE standards must be downloaded manually while within NPS campus or firewall.
## Standards Documents
An IEEEExplore account is usually required to access or purchase these standards documents. Meanwhile,
NPS personnel can obtain the following standards without charge when accessing via nps.edu networks.
### 1278.1-2012. IEEE Standard for Distributed Interactive Simulation (DIS) - Application Protocols <a href="https://ieeexplore.ieee.org/document/6387564" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/6387564
* *Abstract.*
Data messages, known as Protocol Data Units (PDUs), that are exchanged on a network among simulation applications are defined. These PDUs are for interactions that take place within specified domains called protocol families, which include Entity Information/ Interaction, Warfare, Logistics, Simulation Management, Distributed Emission Regeneration, Radio Communications, Entity Management, Minefield, Synthetic Environment, Simulation Management with Reliability, Information Operations, Live Entity Information/Interaction, and Non-Real-Time protocol.
* Date of Publication: 19 Dec. 2012
* Electronic ISBN: 978-0-7381-7310-8
* Also [IEEE Std 1278.1-2012 (Revision of IEEE Std 1278.1-1995)](https://standards.ieee.org/findstds/standard/1278.1-2012.html)
---
### 1278.2-2015. IEEE Standard for Distributed Interactive Simulation (DIS) - Communication Services and Profiles <a href="https://ieeexplore.ieee.org/document/7459689" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/7459689
* *Abstract.*
Communication services to support information exchange between simulation applications participating in the distributed interactive simulation (DIS) environment are defined. These communication services describe a connectionless information transfer that supports real-time, as well as non-real-time, exchange. Several communication profiles specifying communication services are provided.
* *Scope.*
This standard establishes the requirements for the communication services to be used in a DIS simulation. This standard supports IEEE Std 1278.1.
* *Purpose.*
The purpose of this standard is to establish requirements for communication subsystems that support DIS applications. This standard provides service requirements and associated profiles that can be individually selected to meet specific DIS system operational requirements.
* Date of Publication: 6 Nov. 2015
* Electronic ISBN: 978-0-7381-9909-2
---
### 1278.3-1996. IEEE Recommended Practice for Distributed Interactive Simulation - Exercise Management and Feedback <a href="https://ieeexplore.ieee.org/document/587529" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/587529
* *Abstract.*
Guidelines are established for exercise management and feedback in distributed interactive simulation (DIS) exercises. Guidance is provided to sponsors, providers and supporters of DIS-compliant systems and exercises as well as to developers of DIS exercise management and feedback stations. The activities of the organizations involved in a DIS exercise and the top-level processes used to accomplish those activities are addressed. The functional requirements of the exercise management and feedback process are also addressed. This standard is one of a series of standards developed for DIS to assure interoperability between dissimilar simulations for currently installed and future simulations developed by different organizations.
* Date of Publication 1997, Reaffirmed 2002.
---
### 4. 1278.4-1997. IEEE Recommended Practice for Distributed Interactive Simulation - Verification, Validation, and Accreditation <a href="https://ieeexplore.ieee.org/document/8685803" target="_blank"><img src="IeeeLogo.jpg" width="120" align="right"/></a>
* https://ieeexplore.ieee.org/document/8685803
* *Abstract.*
Guidelines are established for the verification, validation, and accreditation (VV&A) of distributed interactive simulation (DIS) exercises. How-to procedures for planning and conducting DIS exercise VV&A are provided. Intended for use in conjunction with IEEE Std 1278.3-1996, this recommended practice presents data flow and connectivity for all proposed verification and validation activities and provides rationale and justification for each step. VV&A guidance is provided to exercise users/sponsors and developers.
* Date of Publication: 10 Sept. 2013
* Electronic ISBN: 978-0-7381-6281-2
---
### 5. SISO-REF-010-2023: Reference for Enumerations for Simulation Interoperability <a href="https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx (scroll down to bottom of page)
* *Abstract.*
SISO-REF-010 specifies numerical values and associated definitions for fields that are identified as enumerations in SISO Standards Products and SISO-sponsored standards published by IEEE for High Level Architecture (HLA) and Distributed Interactive Simulation (DIS). Enumerations for simulations may be applied in other architectures, such as the Test and Training Enabling Architecture (TENA).
* Resources include [SISO-REF-010-2023 distribution](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=46171),
[enumerations PDF](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=46172),
[Operations Manual (OPMAN)](https://www.sisostandards.org/DigitalLibrary.aspx?Command=Core_Download&EntryId=47284) and
[latest version of all resources](https://svn.code.sf.net/p/esitools/code/Release_Information/Current_DRAFT)
---
### 6. SISO-STD-001-2015: Standard for Guidance, Rationale, and Interoperability Modalities (GRIM) for the Real-time Platform Reference Federation Object Model (RPR FOM) <a href="https://www.sisostandards.org/ProductsPublications/ReferenceDocuments.aspx" target="_blank"><img src="SisoLogo.jpg" width="314" align="right"/></a>
* https://www.sisostandards.org/ProductsPublications/Standards/SISOStandards.aspx (scroll down near bottom of page)
* *Abstract.*
SISO-STD-001-2015 encapsulates guidance in the use of the RPR FOM. It provides descriptions of FOM classes and data types and the relationship between Distributed Interactive Simulation (DIS) and the High Level Architecture (HLA)-based RPR FOM, as well as rules for accomplishing specific distributed simulation tasks.
* Version 2.0 (10 Aug 2015)
---
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment