<commit_before>= jMonkeyEngine SDK: Creating Projects
:author: 
:revnumber: 
:revdate: 2016/03/17 20:48
:keywords: documentation, project, deployment, sdk
:relfileprefix: ../
:imagesdir: ..
ifdef::env-github,env-browser[:outfilesuffix: .adoc]


The jMonkeyEngine SDK makes it easy to get started with developing 3-D games based on the jMonkeyEngine.


== Creating a New jMonkeyEngine Project

.  Choose File &gt; New Project from the main menu.
.  In the New Project Wizard, select the template JME3 &gt; Basic Game
.  Click next to specify a project name, and the path where to store your new project.
.  Click Finish. A skeleton application is created and opens in the Project Explorer.
**  This basic jme3 application is based on the SimpleApplication class to allow an easy start with jme3.
**  You can click the run button to run it: You will see a jMonkey cube.



=== Project Structure


image::sdk/jmonkeyplatform-docu-4.png[jmonkeyplatform-docu-4.png,with="421",height="298",align="right"]


Let's have a look at the abstract project structure in the Project Explorer (ctrl-1).

*  *Project Assets node:* These directories have been created for you to store your games assets, such as fonts, materials, models, shaders, sounds, and textures. For a newly created project, these directories are empty.
*  *Source Packages node:* This is where you manage your packages and classes. For a newly created project, it contains one package and one class, `Main.java`. Double click `Main.java` to open it in the editor.
*  *Libraries node:* An overview of all libraies on your game's classpath. The classpath is already set-up for the jme3 framework (including LWJGL, Bullet, Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++, etc).


=== Directory Structure

Now let's have a look at the project's file structure in the File Explorer (ctrl-2). This explorer shows the physical directory structure on your hard drive.

*  *assets* – This directory corresponds to the Project Assets node. It is needed for the assetManager. This is the recommended internal structure:
**  `assets/Interface`
**  `assets/MatDefs`
**  `assets/Materials`
**  `assets/Models`
**  `assets/Scenes`
**  `assets/Shaders`
**  `assets/Sounds`
**  `assets/Textures`

*  *src* – This directory corresponds to the Source Packages node. Your sources code goes here.
*  *nbproject* – This is meta data used by the jMonkeyEngine SDK (don't edit).
*  *build.xml* – This is an Ant build script that is hooked up to the clean/build/run/test actions in the jMonkeyEngine SDK. It loads a default build script, and allows you to further customize the build process. The Ant script also assures that you are able to clean/build/run/test your application outside of the jMonkeyEngine SDK – e.g. from the command line.
*  *build* – This directory contains the compiled classes. (Will be generated by the jMonkeyEngine SDK when you build the project.)
*  *dist* – This directory contains the executable JAR files. (Will be generated by the jMonkeyEngine SDK when you build the project.)
*  *test* – The jMonkeyEngine SDK will store JUnit tests here if you create any. (Optional.)

Project Configuration

Right-Click the project to open the Project properties.

In the Run section, specify the main class of your project. (Pressing F6 runs this main class.)
In the Run section, you can optionally configure JVM options and command line parameters *(in most cases set the-Xms VMOption [NUMBER] m for the memory usage. for example (-Xms500m). see link:http://performance.netbeans.org/howto/jvmswitches/[http://performance.netbeans.org/howto/jvmswitches/])*.
In the Application section, specify the game title (by default the game will be named BasicGame).
In the Application section, specify the vendor name (your name), a short description, your project's homepage, and a splash screen.


==== Project Configuration

Right-Click the project to open the Project properties.

*  In the Run section, specify the main class of your project. (Pressing F6 runs this main class.) 
*  In the Run section, you can optionally configure JVM options and command line parameters.
*  In the Application section, specify the game title (by default the game will be named `BasicGame`).
*  In the Application section, specify the vendor name (your name), a short description, your project's homepage, and a splash screen.


==== Clean, Build and Run Cycle


image::sdk/jmonkeyplatform-docu-5.png[jmonkeyplatform-docu-5.png,with="421",height="298",align="right"]



[IMPORTANT]
====
Pressing *F6 builds &amp; runs* the _main_ class of the _main project_. If there are several classes, or several projects, you have to specify which one you want F6 to run. Right-click a project and choose Set As Main Project, then right-click the project again and choose Properties > Run and choose a Main Class. +
To build and run the main() of _any file that is open in the editor_, press *Shift-F6* !
====


*  Right-Click the project and use the context-menu to clean all generated classes and JARs.
*  Right-Click individual files with a main method to build and run them. (Shift-F6)
*  Press the Run button (green arrow in the toolbar) to build and run the project. (F6) 

*More than one project open?* The toolbar buttons and the F-keys are bound to the main project, which is shown in bold in the Project Explorer. Right-click a project and select Set As Main Project to make it respond to the toolbar buttons and F-keys.

*Worried About Proprietary Lock-in?* You are never locked into the jMonkeyEngine SDK: At any time, you can change into your project directory on the command line, and clean, build, and run your project, using non-proprietary Apache Ant commands: 

[source]
----
ant clean; ant jar; ant run;
----


==== Development Process

*  *Creating new files and packages:* Select the Source Packages node (or any of its subnodes), and press ctrl-N (File→New File): Use the New File wizard to create new Java classes, Java packages, Java beans, Swing forms, JUnit files, j3m Materials, j3o scenes, j3f filters, and many more.
*  *Editing files:* Open the Projects Explorer and double-click a Java file from the Source Packages to open it in the Editor. The <<sdk/code_editor#,jMonkeyEngine SDK Code Editor>> assists you in many ways, including syntactic and semantic code coloring, code completion, and javadoc. <<sdk/code_editor#,(More...)>>
*  *Adding Assets:*
**  You can <<sdk/model_loader_and_viewer#,import models, scenes, and materials>> as assets into your project.
**  To add sound files and images, use your operating system's file explorer and copy the files into your project's asset directory.

*  *ToDo List:* The tasks window automatically lists all lines containing errors and warnings, and all lines that you have marked with the comment keywords 
[source,html]
----
FIXME
----
, @todo, or TODO.
*  *Integrated tools:* <<sdk/debugging_profiling_testing#,Debugging, Testing, Profiling>>.


==== Adding external jar libraries

You may want to use external Java libraries in your jME project, for example content generators or artificial intelligence implementations.

Add the library to the global library list:

*  Select Tools→Libraries in the main menu.
*  Click “New Library, enter a name for the library, and press OK
*  In the “Classpath tab, press “Add JAR/Folder and select the jar file(s) needed for the library
*  (Optional) In the “JavaDoc tab, press “Add ZIP/Folder and select the javadoc for the library, as zip file or folder.
*  (Optional) In the “Sources tab you can select a folder or jar file containing the source files of the library.
*  Press OK

Add the library to a project:
<commit_msg>Update project_creation.adoc<commit_after>= jMonkeyEngine SDK: Creating Projects
:author: 
:revnumber: 
:revdate: 2016/03/17 20:48
:keywords: documentation, project, deployment, sdk
:relfileprefix: ../
:imagesdir: ..
ifdef::env-github,env-browser[:outfilesuffix: .adoc]


The jMonkeyEngine SDK makes it easy to get started with developing 3-D games based on the jMonkeyEngine.


== Creating a New jMonkeyEngine Project

.  Choose File &gt; New Project from the main menu.
.  In the New Project Wizard, select the template JME3 &gt; Basic Game
.  Click next to specify a project name, and the path where to store your new project.
.  Click Finish. A skeleton application is created and opens in the Project Explorer.
**  This basic jme3 application is based on the SimpleApplication class to allow an easy start with jme3.
**  You can click the run button to run it: You will see a jMonkey cube.



=== Project Structure


image::sdk/jmonkeyplatform-docu-4.png[jmonkeyplatform-docu-4.png,width="421",height="298",align="right"]


Let's have a look at the abstract project structure in the Project Explorer (ctrl-1).

*  *Project Assets node:* These directories have been created for you to store your games assets, such as fonts, materials, models, shaders, sounds, and textures. For a newly created project, these directories are empty.
*  *Source Packages node:* This is where you manage your packages and classes. For a newly created project, it contains one package and one class, `Main.java`. Double click `Main.java` to open it in the editor.
*  *Libraries node:* An overview of all libraies on your game's classpath. The classpath is already set-up for the jme3 framework (including LWJGL, Bullet, Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++, etc).


=== Directory Structure

Now let's have a look at the project's file structure in the File Explorer (ctrl-2). This explorer shows the physical directory structure on your hard drive.

*  *assets* – This directory corresponds to the Project Assets node. It is needed for the assetManager. This is the recommended internal structure:
**  `assets/Interface`
**  `assets/MatDefs`
**  `assets/Materials`
**  `assets/Models`
**  `assets/Scenes`
**  `assets/Shaders`
**  `assets/Sounds`
**  `assets/Textures`

*  *src* – This directory corresponds to the Source Packages node. Your sources code goes here.
*  *nbproject* – This is meta data used by the jMonkeyEngine SDK (don't edit).
*  *build.xml* – This is an Ant build script that is hooked up to the clean/build/run/test actions in the jMonkeyEngine SDK. It loads a default build script, and allows you to further customize the build process. The Ant script also assures that you are able to clean/build/run/test your application outside of the jMonkeyEngine SDK – e.g. from the command line.
*  *build* – This directory contains the compiled classes. (Will be generated by the jMonkeyEngine SDK when you build the project.)
*  *dist* – This directory contains the executable JAR files. (Will be generated by the jMonkeyEngine SDK when you build the project.)
*  *test* – The jMonkeyEngine SDK will store JUnit tests here if you create any. (Optional.)

Project Configuration

Right-Click the project to open the Project properties.

In the Run section, specify the main class of your project. (Pressing F6 runs this main class.)
In the Run section, you can optionally configure JVM options and command line parameters *(in most cases set the-Xms VMOption [NUMBER] m for the memory usage. for example (-Xms500m). see link:http://performance.netbeans.org/howto/jvmswitches/[http://performance.netbeans.org/howto/jvmswitches/])*.
In the Application section, specify the game title (by default the game will be named BasicGame).
In the Application section, specify the vendor name (your name), a short description, your project's homepage, and a splash screen.


==== Project Configuration

Right-Click the project to open the Project properties.

*  In the Run section, specify the main class of your project. (Pressing F6 runs this main class.) 
*  In the Run section, you can optionally configure JVM options and command line parameters.
*  In the Application section, specify the game title (by default the game will be named `BasicGame`).
*  In the Application section, specify the vendor name (your name), a short description, your project's homepage, and a splash screen.


==== Clean, Build and Run Cycle


image::sdk/jmonkeyplatform-docu-5.png[jmonkeyplatform-docu-5.png,width="421",height="298",align="right"]



[IMPORTANT]
====
Pressing *F6 builds &amp; runs* the _main_ class of the _main project_. If there are several classes, or several projects, you have to specify which one you want F6 to run. Right-click a project and choose Set As Main Project, then right-click the project again and choose Properties > Run and choose a Main Class. +
To build and run the main() of _any file that is open in the editor_, press *Shift-F6* !
====


*  Right-Click the project and use the context-menu to clean all generated classes and JARs.
*  Right-Click individual files with a main method to build and run them. (Shift-F6)
*  Press the Run button (green arrow in the toolbar) to build and run the project. (F6) 

*More than one project open?* The toolbar buttons and the F-keys are bound to the main project, which is shown in bold in the Project Explorer. Right-click a project and select Set As Main Project to make it respond to the toolbar buttons and F-keys.

*Worried About Proprietary Lock-in?* You are never locked into the jMonkeyEngine SDK: At any time, you can change into your project directory on the command line, and clean, build, and run your project, using non-proprietary Apache Ant commands: 

[source]
----
ant clean; ant jar; ant run;
----


==== Development Process

*  *Creating new files and packages:* Select the Source Packages node (or any of its subnodes), and press ctrl-N (File→New File): Use the New File wizard to create new Java classes, Java packages, Java beans, Swing forms, JUnit files, j3m Materials, j3o scenes, j3f filters, and many more.
*  *Editing files:* Open the Projects Explorer and double-click a Java file from the Source Packages to open it in the Editor. The <<sdk/code_editor#,jMonkeyEngine SDK Code Editor>> assists you in many ways, including syntactic and semantic code coloring, code completion, and javadoc. 
*  *Adding Assets:*
**  You can <<sdk/model_loader_and_viewer#,import models, scenes, and materials>> as assets into your project.
**  To add sound files and images, use your operating system's file explorer and copy the files into your project's asset directory.

*  *ToDo List:* The tasks window automatically lists all lines containing errors and warnings, and all lines that you have marked with the comment keywords 
[source,html]
----
FIXME
----
, @todo, or TODO.

*  *Integrated tools:* <<sdk/debugging_profiling_testing#,Debugging, Testing, Profiling>>.


==== Adding external jar libraries

You may want to use external Java libraries in your jME project, for example content generators or artificial intelligence implementations.

Add the library to the global library list:

*  Select Tools→Libraries in the main menu.
*  Click “New Library, enter a name for the library, and press OK
*  In the “Classpath tab, press “Add JAR/Folder and select the jar file(s) needed for the library
*  (Optional) In the “JavaDoc tab, press “Add ZIP/Folder and select the javadoc for the library, as zip file or folder.
*  (Optional) In the “Sources tab you can select a folder or jar file containing the source files of the library.
*  Press OK

Add the library to a project:

{'fraction_non_alphanumeric': 0.07763003519749706, 'fraction_numerical': 0.006257332811888932, 'mean_word_length': 4.379733520336606, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '403030', 'n_tokens_mistral': 4307, 'n_tokens_neox': 4064, 'n_words': 2186}