Pooka SDK Developer Guide
Using Pooka Project Creator

About Project Creator

Pooka Project Creator is the tool used to create the initial project structure of a Pooka SDK® application. The tool collects necessary information such as app name, app type and targeting platforms then generate the initial project structure, which is the starting point used by developer to start the application development.

The output of the Pooka Project Creator is a directory with strict folder structure that works only with Pooka SDK®. Any modification on the folder structure and file name will make the application unable to be built by Pooka SDK®.

There are two different editions of Pooka Project Creator, a console based and a GUI based. The GUI based project creator is simply a front end of the console based project creator.

PookaProj - Console based Pooka Project Creator

PookaProj can be found as

[SDK Root]/Tools/PookaProj.exe (Windows edition)

[SDK Root]/Tools/PookaProj (macOS Edition)

The following text is the output when launch PookaProj without any command line arguments, which is the basic reference of the tool:

=========================================================================
Project duplication / update Tool
This tool helps you to:
1) Create new project structure based on the input application name, target
platforms and the specified app type or a template project.
2) Update an existing projects by replace the application name or add/remove
target platforms.
Pooka SDK(r) 1.5.0
Copyright(c) OmniG Software Inc.
www.OmniGSoft.com
=========================================================================

Usages:

    Display tool help:        PookaProj -h|-help
    List supported platforms: PookaProj -l|-listPlatform
    List available templates: PookaProj -t|-listTemplate
    Create new project:       PookaProj -c|-create source -d|-destination destination [-p|-platform platforms] [-v|-verbose]
    Update existing project:  PookaProj -u|-update source -d|-destination destination [-p|-platform platforms] [-v|-verbose]
    Remove existing project:  PookaProj -r|-remove -d|-destination destination [-p|-platform platforms] [-v|-verbose]
    Run with wizard mode:     PookaProj -w|-wizard

    source          TemplateName|SourceProjectName|SourceProjectPath
                    Valid template names:   OGAppEmpty, 
                                            OGAppTemplate, 
                                            ConsoleAppTemplate, 
                                            LWComponentTemplate, 
                                            OGNetworkAppTemplate, 
                                            GameApp2D, 
                                            GameApp3D, 
                                            StaticLibTemplate
    destination     DestinationProjectName|DestinationProjectPath

 Tip  Use option -w|-wizard to run the tool with in wizard mode can help familiar with the project creator.

Options:

    -p|-platform    Platforms to create/update/remove for destination project, separated by ','.
                    If this option or platforms are not specified, all platforms will be processed.
                    Valid platform names:   Win32, 
                                            WinUWP, 
                                            MacOS, 
                                            iOS, 
                                            Android
    -v|-verbose     Display processing information

Examples:

    PookaProj -c OGApp -d MyNewOGApp -v
    PookaProj -c ConsoleApp -d D:/MyProjects/MyNewConsoleApp
    PookaProj -u MyApp1 -d MyApp2 -p iOS,BlackBerry
    PookaProj -u "D:/My Projects/MyApp3" -d MyApp4
    PookaProj -r -d "D:/My Projects/MyApp"

Template project - choose from valid predefined templates or a specified project

In order to create a new Pooka SDK® application project, the PookaProj tool needs a source project as a "Template Project" to generate the new project. This "Template Project" can be chosen from one of predefined template projects provides by Pooka SDK® (See the following chart), or a path specified by the user pointing to a directory contains an existing Pooka SDK® application designated as the template. The second option is useful when developers want to quickly generate a new project from an existing project they worked on.

Template Name Best for
OGAppEmpty
for creating a rudimentary application framework with minimum code
OGAppTemplate
for creating a generic graphics application with basic function demonstrated
ConsoleAppTemplate
for creating a console-like application
LWComponentTemplate
for creating a highly modeled Pooka SDK® light-weight component
OGNetworkAppTemplate
for creating a generic application with networking capability
GameApp2D
for creating a 2D game application
GameApp3D
for creating a 3D game application
StaticLibTemplate
for creating a static library that can be consumed by other Pooka SDK® applications

Assign the supported platforms

The argument "supported platforms" tells the project creator which platforms are the target platforms that the generated application will run on.

Platform Name Info
Win32
Windows 10 Desktop (Version 10586 and above)
WinUWP
Universal Windows Platform (Version 10586 and above)
MacOS
macOS 10.x (10.12 Sierra and above)
iOS
iOS (11.x and above)
Android
Android (5.x Lollipop / API 20 and above)

PookaProjApp - GUI based Pooka Project Creator

PookaProjApp can be found as

[SDK Root]/Tools/PookaProjApp.exe (Windows edition)

[SDK Root]/Tools/PookaProjApp.app (macOS Edition)

Step 1 - Choose operation

In this step, user needs to chose one from three operations:

  • Create Project: create a new Pooka SDK® project
  • Update Project: update an existing Pooka SDK® project (change name, add/remove platforms)
  • Remove Project: remove target platforms from an existing Pooka SDK® project

Step 2 - Choose Source Project

In this step, user needs to chose the source project used as a "master" template to generate the new project.

The source project can be either one of predefined template projects (see template project chart), or an existing Pooka SDK® project. If developers want to create their new project from template project, choose a appropriate template from the list then simply go to the step 3.

Step 2 (continued) - Choose Source Project

If developers want to create a new project based on a previous project they have worked on, input the full path of that project, then go to the step 3.

Step 3 - Set the Destination Project

In this step, user needs to set the destination project by specifying the base directory path and the destination project name. The final output directory will be the combination of the two value developers input: final output directory = base directory + project name.

Step 4 - Set the Supported Platforms

In this step, user needs to specify the supported platforms (see platform list) that the application runs on.

 Note  If the operation chosen in step 1 is "update" or "remove", some platforms will be removed from the project if they are selected in the platform list-box.

Step 5 - Review / Run

This is the final step to review the tool's argument and run it to create / update / remove the Pooka SDK® project.

The Output of Pooka Project Creator

Regardless which version of Pooka Project Creator is used, the output is a directory with strict folder structure that works with Pooka SDK® and recommended development IDEs.

The following list is a typical directory generated by the project creator, with the project name given as SpaceDefender and all supported platforms selected by user:

  • SpaceDefender
    • Assets     <-------— Application defined defined assets
      • ...
      • ...
      • ...
    • Res     <-------— Platform understandable resources
      • Android
      • Mac_iOS
      • Windows
        • Win32
        • WinUWP
    • SpaceDefender.Android     <-------— Android project folder
      • SpaceDefender.NativeActivity         <-------— Android app. source project
      • SpaceDefender.Packaging         <-------— Android app. packaging project
    • SpaceDefender_iOS.xcodeproj     <-------— iOS app. project
    • SpaceDefender_macOS.xcodeproj     <-------— macOS app. project
    • SpaceDefender_VS2015.Win32.vcxproj     <-------— Windows desktop app. project
    • SpaceDefender_VS2015.WinUWP.vcxproj     <-------— Windows UWP app. project

 Note 

  • Assets: Application defined defined assets, including UI templates, images, sounds, 3D models and so on. These assets are parsed and processed by Pooka SDK® at run-time.
  • Res: Platform understandable resources, including icons, launch images, application manifest and so on. These resources are compiled by platform build tools at build-time and also referenced by platform API at run-time.
  • Android Project: Android application project folder
    • Source Project:1 contains all source code used to generate the Android binary package. Generate Java classes and native library (.so) and etc.
    • Packaging Project:1 Generate the final Android application package (.APK)
  • iOS app. project:2 project builds application for iOS
  • macOS app. project:2 project builds application for macOS
  • Windows desktop app. project:1 project builds application for Windows desktop
  • Windows UWP app. project:1 project builds application for Windows UWP platform

 Note 
1 - Built by Visual Studio, see Development Environment Setup for more details.
2 - Built by XCode, see Development Environment Setup for more details.

Platform About two Android projects
There are two Android projects (SpaceDefender.NativeActivity and SpaceDefender.Packaging) under a folder SpaceDefender.Android.
The .Packaging file is the Android packaging project that generates the final Android package (.Apk) and deploys it to an Android device; The .NativeActivity file is the Android source code project that generate the Android executable binary.
These two projects must sit side-by-side under folder SpaceDefender.Android. The packaging project should depend on the source code project. This dependency has been established by project reference. When build / debug / test an Android application, developers should set the packaging project as the "start-up project" in Visual Studio.

The Recommended IDEs Used to Build the Project

The following chart list the recommended IDEs used to open the project file and build the application

Project File Recommended IDE
SpaceDefender_VS2015.Win32.vcxproj
Visual Studio 3
SpaceDefender_VS2015.WinUWP.vcxproj
Visual Studio 3
SpaceDefender_macOS.xcodeproj
XCode 4
SpaceDefender_iOS.xcodeproj
XCode 4
SpaceDefender.NativeActivity
Visual Studio 3
SpaceDefender.Packaging
Visual Studio 3

 Note 
3 - Visual Studio 2015 (update 3), 2017 (version 15.5)
4 - XCode 8.x, XCode 9.x