COMP 310 
		  
		Spring 2018
		 | 
		
		Lec40: Mixed Data  
		Dictionaries, WWJ Mapping 
		Library and the map package 
		 | 
	
	
		
		
		  
		
		  
		
		   
		
		  
		
		  
		
		  | 
	
Final Project Issues:
	- How restrictive is the API?    Does it rule out certain 
	system architectures, e.g. only client-server topologies are allowed?    
	Remember, that this assignment is not at all about games but rather about 
	enterprise communications architectures that are connecting arbitrary 
	systems together, so is it reasonable to make such restrictions?
	
		- Focus on what the fundamental behaviors and data are needed for 
		message-based communications across an enterprise, not on what is 
		"easiest to code" or "makes it easy to create a particular type of 
		system".    The communications subsystem is one of the most invariant 
		parts of an enterprise system and what it is asked to do today may not 
		look anything like what it will be asked to do tomorrow.   Don't 
		base your decisions on whether or not you think that the implementation 
		will be "too hard"--do  the 
		right 
		thing, not the easy thing.
 
	
	 
	- Can an externally-sourced command send a message to
		- The sender of the datapacket that it is processing?  ==> Does the 
		command have access to the local entity that would be defined as the 
		"sender" of the message?
 
		- The chatroom in which the user of the command is located?   ==> Does 
		the command have access to an ability to send a message directly to the 
		containing chatroom?   
		
			- If sending to the chatroom is done by relaying the message back 
			through the original sender of the data packet being processed, what 
			implications does this have about the commands that are being used 
			on that machine vs. other machines?
 
		
		 
		- Other chatrooms?  ==> Does the command have access to services that 
		enable this type of communications?
			- Once again, if sending to the chatroom is done by relaying the 
			message back through the original sender of the data packet being 
			processed, what implications does this have about the commands that 
			are being used on that machine vs. other machines?
 
		
		 
		- Does the API encourage the respecting of the local system's 
		encapsulation of its communications subsystem?
			- At the level of the internal workings of a command, what can be 
			said about how messages are transported between computers, e.g. does 
			the command actually know how messages are transported?   Should 
			it know anything about the message transport mechanism?  
 
		
		 
	
	 
	- In client-server or other game architectures where different machines 
	are not equivalent, what are the implications about what commands are being 
	used to process the same message on different machines?
		- Are different "rooms" on the same machine even required to process 
		the same message identically?
 
	
	 
	- Is there a semantic difference between the process used to initially 
	connect the game clients and game server together and initialize the game 
	vs. the actual in-game processes and is the API able to clearly express the 
	differences and similarities?
		- Note that semantic differences can be expressed at many levels, e.g. 
		at the receiver level, at the method level, at the message level or some 
		combination of these techniques.
 
	
	 
	- Does an externally-sourced command have/need access to local system 
	information, e.g. the name of the local user, the name of the room/team, IP 
	address, etc?
 
	- Does the GUI interactions enable the added components to be labeled?   
	This makes it a lot easier for the GUI to make a sensible presentation of 
	the custom components.
		- Try to make your system maximally respectful of  the local system's 
		MVC separations, including notions that code running under the command's 
		(usually RMI) threads are not directly working with GUI threading.    
		This can be accomplished by having the command create a "mini-mini-MVC" 
		where the command's "view" is installed into the local system's GUI.
 
	
	 
 
Mixed Data Dictionaries
Please see the Java Resources page on
Mixed Data 
Dictionaries and Inter-Module Communications.
 
WWJ Mapping Library 
Please use a message-passing architecture for 
game server to game client communications -- one of the main points of the final 
project is to practice thinking in these terms.
Today we will discuss the new World 
Wind Java mapping library as well as any design issues that have come up 
over the break.   Here are some links to WWJ references and demos:
A WWJ demo app is available: simply check out the following project:  
https://svn.rice.edu/r/comp310/course/FinalProjec/FXX/WWJ_Demo   (FXX 
= F14 for Fall 2014, for example)
Word of advice:   Those who accomplish 
more, earlier, will have first dibs at suggesting and effecting common API 
changes that would naturally benefit their game the most!   Stragglers 
will be forced to modify their code to accomodate other people's desires.
 
A utility and example package to help students get started with WWJ is 
provided.   This package provides some classes that will enable one to 
quickly and easily get a map to display in one's application along with some 
simple but useful annotation capabilities.   Please follow the link 
above for more information and documenation.
© 2018 by Stephen Wong