Cs345-2010

From Earlham Cluster Department

(Difference between revisions)
Jump to: navigation, search
(Documentation)
 
(39 intermediate revisions not shown)
Line 4: Line 4:
= Porting Intel's Smoke Game Demo to Linux =
= Porting Intel's Smoke Game Demo to Linux =
<i>N.B.</i> - If you edit by section (using the "edit" links next to the section heading) you will be much less likely to cause a Save conflict.
<i>N.B.</i> - If you edit by section (using the "edit" links next to the section heading) you will be much less likely to cause a Save conflict.
 +
=== Latest News ===
 +
 +
=== Latest Issues ===
 +
 +
=== Known Bugs ===
 +
*Smoke.cpp does not recognize Framework.cpp unless it is explicitly included.
 +
** Even if Framework.h is included
 +
 +
=== Smoke Wiki Pages ===
 +
* [[Raw List of Smoke Changes]]
----
----
=== Background Information ===
=== Background Information ===
-
* http://software.intel.com/en-us/articles/smoke-game-technology-demo/ - Intel Software Network article
+
* BASH quick reference card - [[Media:bash-quick-ref.pdf]]
-
* http://www.fmod.org/ - FMOD Audio Engine
+
* [http://software.intel.com/en-us/articles/smoke-game-technology-demo/ Intel Software Network article]
-
* http://www.havok.com/ - Havok Physics Engine
+
* [http://www.fmod.org/ FMOD Audio Engine]
-
* http://www.ogre3d.org/wiki/index.php/Main_Page - Ogre Rendering Engine Wiki
+
* [http://www.havok.com/ Havok Physics Engine]
-
* http://www.grinninglizard.com/tinyxml/ - TinyXML Main Site
+
* [http://www.ogre3d.org/wiki/index.php/Main_Page Ogre Rendering Engine Wiki]
-
* http://www.threadingbuildingblocks.org/ - TBB
+
* [http://www.grinninglizard.com/tinyxml/ TinyXML Main Site]
 +
* [http://www.threadingbuildingblocks.org/ Intel's Thread Building Blocks]
* (Post Other Links Here)
* (Post Other Links Here)
* Notes from the Intel Software Network article on porting Smoke  
* Notes from the Intel Software Network article on porting Smoke  
Line 24: Line 35:
# Examine all of the source kit's directory tree and build an annotated map of it in the wiki. (Nick)(Done!)
# Examine all of the source kit's directory tree and build an annotated map of it in the wiki. (Nick)(Done!)
# Examine all of the <code>#includes</code> in <code>Smoke.cpp</code> and propose solutions for porting/converting/removing each of them. Remember that <code>#includes</code> nest, we need to follow each thread starting with the ones in <code>Smoke.cpp</code>.  (Sam)(Done!)
# Examine all of the <code>#includes</code> in <code>Smoke.cpp</code> and propose solutions for porting/converting/removing each of them. Remember that <code>#includes</code> nest, we need to follow each thread starting with the ones in <code>Smoke.cpp</code>.  (Sam)(Done!)
 +
# Develop a Perl script/command line that converts back slashes to front slashes in directory paths.  Use the feature that creates a backup of each changed file as it goes. (Sam)(Done!)
# Figure-out roughly how each of these works, what the dependencies are, <i>etc.</i> and propose a solution for porting/converting/removing each of them:
# Figure-out roughly how each of these works, what the dependencies are, <i>etc.</i> and propose a solution for porting/converting/removing each of them:
#* Logging (Gil)
#* Logging (Gil)
 +
#** Internal messages
 +
#** Debug messages, add the ability to
#* Debugging (Gil)
#* Debugging (Gil)
 +
#** <code>getopt()</code>
#* EngineExecuteGDF (Gil)
#* EngineExecuteGDF (Gil)
-
#* <code>main()</code> in <code>Smoke.cpp</code>  (Gil)
+
#* <code>main()</code> in <code>Smoke.cpp</code>  (Gil)(Done)
-
#* Argument processing in <code>Smoke.cpp</code>  (Gil)
+
#* Argument processing in <code>Smoke.cpp</code>  (Gil)(Done)
-
#Develop an ordered plan in the wiki (collective, in class on Tuesday)
+
#Develop an ordered plan in the wiki (collective, in class on Friday)
#* Modules  
#* Modules  
#* Libraries  
#* Libraries  
#** Ogre/OpenGL replacing DirectX  (Sam)
#** Ogre/OpenGL replacing DirectX  (Sam)
-
#** Find and guard/eliminate .NET stuff  (To Do)
+
#** Find and guard/eliminate .NET stuff  (Nick)
-
#** DirectX -> ? conversion for SystemInput and SystemFire  (To Do)
+
#** DirectX -> ? conversion for SystemInput and SystemFire  (To Do before 2/26)
-
#** Havoc (Future)
+
#** Havoc (Nick)(Done(ish))(See Note*)
#* Functionality
#* Functionality
# Figure-out Doxygen and build a doc set  (Sam)(Done!)
# Figure-out Doxygen and build a doc set  (Sam)(Done!)
-
# Figure-out Make and construct the first simple Makefile that builds Smoke (collective, in class on Tuesday)
+
# Figure-out Make and construct the first simple Makefile that builds Smoke (To Do before 2/26)
 +
 
 +
 
 +
*Note: Upon examining the code, I find that Havok is called, but the source for Havok is not given. We may have to [http://www.havok.com/index.php?page=purchase-inquiry/ inquire about and purchase] the Linux Havok Libraries, as only the PC version Libraries are available for free (and only in binary).
----
----
=== Documentation ===
=== Documentation ===
-
* Smoke Main Page - http://software.intel.com/en-us/articles/smoke-game-technology-demo/- Outlines primary benefits of multi-threading in Games, and possibilities of use.  
+
* [http://software.intel.com/en-us/articles/smoke-game-technology-demo/ Smoke Main Page] - Outlines primary benefits of multi-threading in Games, and possibilities of use.  
-
* Smoke Overview Video - http://software.intel.com/en-us/videos/brief-overview-of-technologies-used-in-Intels-Smoke-Demo/- A Short video that explains the purpose of the demo, the tools used, and some design choices.
+
* [http://software.intel.com/en-us/videos/brief-overview-of-technologies-used-in-Intels-Smoke-Demo/ Smoke Overview Video] - A Short video that explains the purpose of the demo, the tools used, and some design choices.
-
* Tech Overview Video - http://software.intel.com/en-us/videos/take-an-in-depth-look-at-Intels-smoke-demo/ - A longer video which gives examples of each of the listed calculations shown in the demo, and shows the difference between 8 threads and 1 thread.
+
* [http://software.intel.com/en-us/videos/take-an-in-depth-look-at-Intels-smoke-demo/ Tech Overview Video] - A longer video which gives examples of each of the listed calculations shown in the demo, and shows the difference between 8 threads and 1 thread.
-
* Procedural Fire Overview - http://software.intel.com/en-us/articles/an-overview-of-procedural-fire/ - Article that explains how the Procedural Fire decides where to burn, and when hit with water, where to be put out.
+
* [http://software.intel.com/en-us/articles/an-overview-of-procedural-fire/ Procedural Fire Overview] - Article that explains how the Procedural Fire decides where to burn, and when hit with water, where to be put out.
-
* Parallel Game Engine Framework - http://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine/ - Article explaining the decisions made when designing the demo as it pertains to an overall framework for threading a game engine.
+
* [http://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine/ Parallel Game Engine Framework] - Article explaining the decisions made when designing the demo as it pertains to an overall framework for threading a game engine.
-
* Fall IDF Presentation - Initial introduction of Smoke, outlines the challenges multi-core has presented to game development, and how Smoke solves those challenges.
+
* Fall IDF Presentation - Smoke/docs/Presentations/Fall IDF/ - Initial introduction of Smoke, outlines the challenges multi-core has presented to game development, and how Smoke solves those challenges.
-
* Gamefest Smoke Presentation - Explains how Smoke alleviates problems in Game Development, and how the Change Control Manager manages threads.
+
* Gamefest Smoke Presentation - Smoke/docs/Presentations/GameFest/ - Explains how Smoke alleviates problems in Game Development, and how the Change Control Manager manages threads.
-
* GDC 08 Presentation - 7 zip files demonstrating games that have successfully used threading at the time, including the successes and failures of each.
+
* GDC 08 Presentation - Smoke/docs/Presentations/GDC 2008/ - 7 zip files demonstrating games that have successfully used threading at the time, including the successes and failures of each.
 +
* [http://cs.earlham.edu/~leemasa/SmokeCode/ Doxygen Documentation]
Line 77: Line 96:
*media - Audio, Video, and other files associated with output.
*media - Audio, Video, and other files associated with output.
-
Note: Ogre subdirectories already include many things pertaining to Linux and OpenGL, so rendering differently may be easier than expected.
+
Note: Ogre subdirectories already include many things pertaining to Linux and OpenGL, so rendering differently may be easier than expected. <br>
 +
Note 2: A full directory tree, including files, has been uploaded to the repo.  
----
----
Line 212: Line 232:
==== ? replacing .NET ====
==== ? replacing .NET ====
* Where is it used?
* Where is it used?
 +
  code/src/SystemScripting/ScriptEngine.cpp
* Purpose and operation
* Purpose and operation
 +
**using namespace System; - [http://msdn.microsoft.com/en-us/library/system.aspx System Namespace]
 +
**using namespace System::Reflection; - [http://msdn.microsoft.com/en-us/library/system.reflection.aspx Reflection Namespace]
 +
**using namespace System::Runtime::InteropServices; - [http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.aspx Interop Services Namespace]
 +
* Dependencies  
* Dependencies  
* Proposed adapt/convert/remove plan
* Proposed adapt/convert/remove plan
Line 221: Line 246:
* Dependencies  
* Dependencies  
* Proposed adapt/convert/remove plan
* Proposed adapt/convert/remove plan
 +
 +
==== SSE ====
 +
Streaming SIMD Extensions (SSE) is a system for speeding operations required for audio and video processing.  These were implemented as extensions to the IA32 (i.e. x86) instruction set.
 +
 +
Resources:
 +
* [http://www.codeproject.com/KB/recipes/sseintro.aspx Intro to SSE]
 +
* [http://sourceware.org/gdb/papers/linux/linux-sse.html SSE in Linux]

Latest revision as of 00:55, 4 April 2010

Contents

Porting Intel's Smoke Game Demo to Linux

N.B. - If you edit by section (using the "edit" links next to the section heading) you will be much less likely to cause a Save conflict.

Latest News

Latest Issues

Known Bugs

Smoke Wiki Pages


Background Information


Near Term Tasks

  1. Examine all of the documentation and build an annotated index of it in the wiki. Materials that are on-line already, e.g. the ones listed above, can have URLs and annotations. Ones that come with the source kit should just have titles, file system paths, and annotations. We don't want to upload those to the wiki without first checking with Intel about re-publishing their materials. (Nick)(Done!)
  2. Examine all of the source kit's directory tree and build an annotated map of it in the wiki. (Nick)(Done!)
  3. Examine all of the #includes in Smoke.cpp and propose solutions for porting/converting/removing each of them. Remember that #includes nest, we need to follow each thread starting with the ones in Smoke.cpp. (Sam)(Done!)
  4. Develop a Perl script/command line that converts back slashes to front slashes in directory paths. Use the feature that creates a backup of each changed file as it goes. (Sam)(Done!)
  5. Figure-out roughly how each of these works, what the dependencies are, etc. and propose a solution for porting/converting/removing each of them:
    • Logging (Gil)
      • Internal messages
      • Debug messages, add the ability to
    • Debugging (Gil)
      • getopt()
    • EngineExecuteGDF (Gil)
    • main() in Smoke.cpp (Gil)(Done)
    • Argument processing in Smoke.cpp (Gil)(Done)
  6. Develop an ordered plan in the wiki (collective, in class on Friday)
    • Modules
    • Libraries
      • Ogre/OpenGL replacing DirectX (Sam)
      • Find and guard/eliminate .NET stuff (Nick)
      • DirectX -> ? conversion for SystemInput and SystemFire (To Do before 2/26)
      • Havoc (Nick)(Done(ish))(See Note*)
    • Functionality
  7. Figure-out Doxygen and build a doc set (Sam)(Done!)
  8. Figure-out Make and construct the first simple Makefile that builds Smoke (To Do before 2/26)



Documentation



Directory Tree

Note: Ogre subdirectories already include many things pertaining to Linux and OpenGL, so rendering differently may be easier than expected.
Note 2: A full directory tree, including files, has been uploaded to the repo.


Smoke.cpp #include Files


System Path #include files

Format is: (A file that includes the header) #include <(include file)>

Sub-Systems

Logging

Debugging

EngineExecuteGDF

Ogre/OpenGL replacing Ogre/DirectX

High-level 3D graphics engine

OpenGL, DirectX, or Cg

Figure out how DirectX is being used and switch out DirectX functionality (HLSL in Ogre), with OpenGL (GLSL).

 ? replacing .NET

 code/src/SystemScripting/ScriptEngine.cpp

DirectX -> ? conversion for SystemInput and SystemFire

SSE

Streaming SIMD Extensions (SSE) is a system for speeding operations required for audio and video processing. These were implemented as extensions to the IA32 (i.e. x86) instruction set.

Resources:

Personal tools
Namespaces
Variants
Actions
websites
wiki
this semester
Toolbox