2
0
Эх сурвалжийг харах

removed atomix tutorials.

mitm 5 жил өмнө
parent
commit
2f4fe60a37
36 өөрчлөгдсөн 0 нэмэгдсэн , 5547 устгасан
  1. 0 1
      src/docs/asciidoc/jme3.adoc
  2. 0 116
      src/docs/asciidoc/jme3/atomixtuts.adoc
  3. 0 170
      src/docs/asciidoc/jme3/atomixtuts/bladegame.adoc
  4. 0 10
      src/docs/asciidoc/jme3/atomixtuts/bladegame/design.adoc
  5. 0 12
      src/docs/asciidoc/jme3/atomixtuts/cardgame/gameplay.adoc
  6. 0 288
      src/docs/asciidoc/jme3/atomixtuts/cardsgame.adoc
  7. 0 80
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/adtechs.adoc
  8. 0 361
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/ai.adoc
  9. 0 162
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/assets.adoc
  10. 0 11
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/gameplay.adoc
  11. 0 1097
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/programming.adoc
  12. 0 42
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/scripting.adoc
  13. 0 8
      src/docs/asciidoc/jme3/atomixtuts/cardsgame/webharvest.adoc
  14. 0 348
      src/docs/asciidoc/jme3/atomixtuts/design.adoc
  15. 0 245
      src/docs/asciidoc/jme3/atomixtuts/greenberet.adoc
  16. 0 229
      src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame.adoc
  17. 0 220
      src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/gameplay/detailed.adoc
  18. 0 56
      src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/programming/ai.adoc
  19. 0 28
      src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/replay.adoc
  20. 0 161
      src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/researches.adoc
  21. 0 366
      src/docs/asciidoc/jme3/atomixtuts/kickgame.adoc
  22. 0 104
      src/docs/asciidoc/jme3/atomixtuts/kickgame/ai.adoc
  23. 0 68
      src/docs/asciidoc/jme3/atomixtuts/kickgame/assets.adoc
  24. 0 65
      src/docs/asciidoc/jme3/atomixtuts/kickgame/cc.adoc
  25. 0 196
      src/docs/asciidoc/jme3/atomixtuts/kickgame/gameplay/detailed.adoc
  26. 0 56
      src/docs/asciidoc/jme3/atomixtuts/kickgame/programming.adoc
  27. 0 309
      src/docs/asciidoc/jme3/atomixtuts/mmorpg.adoc
  28. 0 34
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/articlelinks.adoc
  29. 0 266
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/phase0.adoc
  30. 0 58
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/phase1.adoc
  31. 0 147
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches.adoc
  32. 0 13
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/network/ice.adoc
  33. 0 52
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/network/probuf.adoc
  34. 0 36
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/toolset.adoc
  35. 0 120
      src/docs/asciidoc/jme3/atomixtuts/mmorpg/tools.adoc
  36. 0 12
      src/docs/asciidoc/jme3/atomixtuts/prince.adoc

+ 0 - 1
src/docs/asciidoc/jme3.adoc

@@ -345,7 +345,6 @@ These code examples are not supported by the core team and we cannot guarantee t
 
 *  <<jme3/shaderblow_project#,ShaderBlow Project>> – The jME3 users shaders project.
 *  <<jme3/rise_of_mutants_project#,Rise of Mutants Project>> – Rise of Mutants Project by BigBoots Team.
-*  <<jme3/atomixtuts#,atomixtuts>> – Atomix Tutorial Series
 
 
 == Feedback

+ 0 - 116
src/docs/asciidoc/jme3/atomixtuts.adoc

@@ -1,116 +0,0 @@
-= atomixtuts
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../
-:imagesdir: ..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== ATOMIX TUTORIALS
-
-
-== FIRST WORDS
-
-*Dear monkeys,*
-
-Long time ago I planed to make tutorial series in making games in JME3 and done some examples. I waited for our project to reach a stable status. May be now is the best time to show them up!
-A lot of changes have been make to the core and also a lot of excited and amazing contributions into the world of JME this day (you can name some).
-
-OK, my project had changed to Atomix Tutorial Series (short as ATS).
-[quote]
-____
- These tutorials will lead you through adventures in game devlopment in some games and genres. I will try to get much detail as I can. Hopefully this will become a valuable guidebook for monkeys want to join the jungle! emoji:smile
-____
-
-
-[IMPORTANT]
-====
-Contact me as @atomix in the forum
-
-Google+: link:https://plus.google.com/u/1/113026606091014198679/about[https://plus.google.com/u/1/113026606091014198679/about]
-
-====
-
-
-
-[IMPORTANT]
-====
-
-I decided not to do the voice since it will make you guys too difficult to flow cause I’m not a native speaker. So i will write the tutorials down step by step and also do slideshows and videos for them. Typos correction are always welcome ! emoji:
-====
-
-
-
-[IMPORTANT]
-====
-If you are very new to Java, it's not recommend for you to take these tutorials at first. +
-
-They require quite advanced techniques, suited for advanced Java developer which new to game programming, or one come from other engine. They are writen detailed and intended like to squeeze all the juice out of the things.
-====
-
-'''
-
-
-=== Content
-
-*  Chapter 1 : Card Game <<jme3/atomixtuts/cardsgame#,cardsgame>>
-*  Chapter 2 : RPG Game - Blade of the immortal <<jme3/atomixtuts/bladegame#,bladegame>>
-*  Chapter 3 : Shot-em-all - FPS game <<jme3/atomixtuts/shootemgame#,shootemgame>>
-*  Chapter 4 : Mayan boy - 3D Platform Puzzle game <<jme3/atomixtuts/mayangame#,mayangame>>
-*  Chapter 5 : EuroKick - Sport management game (Soccer) <<jme3/atomixtuts/kickgame#,kickgame>>
-*  Chapter 6 : RTS Multiplayer game - HeavenRTS <<jme3/atomixtuts/heavenrtsgame#,heavenrtsgame>>
-*  Chapter 7 : Ancient Monkey world <<jme3/atomixtuts/mmorpg#,mmorpg>>
-*  Chapter 8 : GreenBeret <<jme3/atomixtuts/greenberet#,greenberet>>
-*  Chapter 9 : Prince of dark <<jme3/atomixtuts/prince#,prince>>
-
-
-=== Extra stuffs:
-
-*  Framework: <<jme3/advanced/atom_framework#, Atom framework>> , <<jme3/atomixtuts/mmorpg/researches#, Researches MMORPG techs>> , <<jme3/advanced/atom_framework/atomex#, Atom for Cloud framework>>
-*  Modeling : <<jme3/atomixtuts/cc#, Character in Blender>> , <<jme3/atomixtuts/fx#, Effects>>
-*  Concept &amp; Speed painting:
-*  Design : <<jme3/atomixtuts/design#,design>>
-*  AI :  <<jme3/advanced/atom_framework/ai#,AtomAI Framework and Tools>> ,  <<jme3/advanced/atom_framework/ai/researches#, AI Researches>>
-*  +++<abbr title="Graphical User Interface">GUI</abbr>+++ : <<jme3/advanced/atom_framework/gui#,AtomExGui>>
-*  Scripting : <<jme3/scripting#,scripting>>, <<jme3/advanced/atom_framework/scripting#,AtomScripting>>
-*  Everyday stuffs:
-
-
-=== Screenshots:
-
-*Card game:*
-
-
-image::http://farm9.staticflickr.com/8546/8616981856_4d9755f034_z.jpg[8616981856_4d9755f034_z.jpg,width="300",height="",align="center"]
-
-
-*Blade of the immortals* <<jme3/atomixtuts/bladegame#,bladegame>>
-
-
-image::http://farm8.staticflickr.com/7219/6979909124_af97ffed51_b.jpg[6979909124_af97ffed51_b.jpg,width="200",height="",align="center"]
-
-
-
-image::http://farm8.staticflickr.com/7226/7125997763_ced745ee82_z.jpg[7125997763_ced745ee82_z.jpg,width="200",height="",align="center"]
-
-
-*Euro Kick*
-
-
-image::http://farm8.staticflickr.com/7120/7420435866_b531225642_b.jpg[7420435866_b531225642_b.jpg,width="400",height="",align="center"]
-
-
-
-image::http://farm6.staticflickr.com/5320/7420435428_7a99ca6553_b.jpg[7420435428_7a99ca6553_b.jpg,width="400",height="",align="center"]
-
-
-*Heaven – RTS Game.*
-
-
-image::http://farm9.staticflickr.com/8041/7976138046_752c4a5b03_b.jpg[7976138046_752c4a5b03_b.jpg,width="400",height="",align="center"]
-
-
-
-=== Videos

+ 0 - 170
src/docs/asciidoc/jme3/atomixtuts/bladegame.adoc

@@ -1,170 +0,0 @@
-= bladegame
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== BLADE OF THE IMMORTALS
-
-_Medieval RPG Game_
-
-Hi Monkeys,
-
-In the previous you did go through a full process of making a full game with Asset making then Programming, Scripting. It was also fun that you 've learnt a few techniques that you can use in other game.
-
-Now I offer you another adventure that can take you next 2 or 3 next months but it will going to worth it, i promised. This time the challenge will be a RPG game.
-
-
-=== Quick start
-
-Source code: link:https://code.google.com/p/blade-of-immortals-rpg-jme3/[https://code.google.com/p/blade-of-immortals-rpg-jme3/]
-
-Forum link:
-
-Design:
-
-Issues:
-
-Plan:
-
-
-=== SHORT DESCRIPTION
-
-Genre: RPG – Medieval – Combat
-
-Mode: Single and multiplayer
-
-
-=== Idea & Story
-
-Blade of the immortals, its name.
-
-This Story about a girl, named Zena in a mission to deliver a secret weapon - known as “the gift of god to the King of Katharal.
-
-The game are about her adventures along the journey. She got chased by huanted evil and mystic monster raised from hell to stop her mission. Fortunately, he got helped by 3 hero that willing to help her on her way…
-
-
-=== Comic
-
-
-=== Screenshot
-
-Here is some more screen shots
-
-
-image::http://farm8.staticflickr.com/7219/6979909124_af97ffed51_b.jpg[6979909124_af97ffed51_b.jpg,width="200",height="",align="right"]
-
-
-
-image::http://farm8.staticflickr.com/7226/7125997763_ced745ee82_z.jpg[7125997763_ced745ee82_z.jpg,width="200",height="",align="left"]
-
-
-
-image::http://farm8.staticflickr.com/7091/6981639806_c1e4e014d8_z.jpg[6981639806_c1e4e014d8_z.jpg,width="200",height="",align="center"]
-
-
-
-image::http://farm8.staticflickr.com/7063/6981639942_bb06362b55_z.jpg[6981639942_bb06362b55_z.jpg,width="200",height="",align="right"]
-
-
-
-image::http://farm8.staticflickr.com/7178/6987339044_3ff558d451_z.jpg[6987339044_3ff558d451_z.jpg,width="200",height="",align="left"]
-
-
-
-== Research
-
-
-== Design
-
-
-=== Mindmaping
-
-iframe::http://bubbl.us/view/1860d6/2fd76d/15vmlQSf.3GMg/[width="800px", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-iframe::http://text2mindmap.com/1VG1V4[width="800px", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-
-==== Game play
-
-*  RPGGame
-**  Player
-**  Character
-**  Party
-
-*  NPC
-*  Enemy
-**  Demon
-**  Werewolf
-**  Skeleton
-**  Scorpion
-
-*  Skill
-*  Item
-**  Inventory
-
-
-
-===== World
-
-*  Map
-**  Land
-**  Moutain
-***  Forest
-***  River
-***  Bridge
-
-
-*  Trigger
-*  Props
-*  Dungeon
-**  Door
-
-
-
-=== Sketch
-
-
-=== Detailed
-
-<<jme3/atomixtuts/bladegame/design/detailed#,detailed>>
-
-
-== Asset making
-
-Male
-image:http://fc04.deviantart.net/fs70/i/2010/021/3/4/Cabal_Dude_Workflow_by_imogia.jpg[Cabal_Dude_Workflow_by_imogia.jpg,width="",height=""]
-
-
-== Setup
-
-
-== Programming
-
-
-=== Atom framework
-
-This game depend on Atom framework . Read its <<jme3/advanced/atom_framework#, documentation>> for setup steps
-
-
-=== Scripting
-
-
-== PROCESS
-
-
-== Conclusion
-
-
-=== Vision
-
-
-=== Extra
-
-Character customization. Goto <<jme3/advanced/atom_framework/cc#,cc>>

+ 0 - 10
src/docs/asciidoc/jme3/atomixtuts/bladegame/design.adoc

@@ -1,10 +0,0 @@
-= design
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-Blade of the immortal Design

+ 0 - 12
src/docs/asciidoc/jme3/atomixtuts/cardgame/gameplay.adoc

@@ -1,12 +0,0 @@
-= gameplay
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-Summon
-
-Flip

+ 0 - 288
src/docs/asciidoc/jme3/atomixtuts/cardsgame.adoc

@@ -1,288 +0,0 @@
-= cardsgame
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== CARD GAME
-
-*Hi Monkeys,*
-
-This is the first Chapter of the Game making tutorial series and named “The card game”.
-
-My intention is to make a “clone” Card game as Yugi Oh card game (similar to Collectable Magic Cards game).
-
-
-[IMPORTANT]
-====
-emoji: Question: Why “clone”??? emoji: +
-Answer: To skip the concept and idea phase, <<jme3/atomixtuts/cardsgame#Why_clone?, More about Concept and Game Design...>>
-====
-
-
-
-== INTRODUCTION
-
-
-=== Basic idea:
-
-Clone Yugioh – the card game. In the game, two players use magic card with attack and defend to play with each other
-
-Short : <<jme3/atomixtuts/cardsgame/gameplay#,gameplay>>
-
-Detailed game rule can be viewed here: link:http://yugioh.wikia.com/wiki/Master_Rules[http://yugioh.wikia.com/wiki/Master_Rules]
-
-
-=== Why clone?
-
-In fact, the idea and game design phase is very important for game industry! emoji:confused
-
-*But because audiences can also be newbie and non-pro, for them, this process are NOT necessary a MUST  emoji:wink!!!! *
-
-Because of this gameplay and also the games -Yugi Cards and Collectiable Magic Cards are pretty popular, I decided to skip Game Design and Concept phase,  hoping you guys already know what the game should look like and play like. ! I will also to Asset making videos but keep them short as possible.
-
-
-=== Techniques shown
-
-Skills will be used, GOOD things that you should CATCH:
-
-.  Modeling| Import 3D, animations
-.  Atom framework
-.  Picking
-.  Scripting with Groovy
-.  Basic animation, effects
-
-
-=== Advanced
-
-Advanced features/potentials of the game:
-
-.  AI, rule base
-.  Web harvest for data
-.  Tournament ( multiplayer)
-.  *Script and advanced rule parsing (with ANTRL and OpenNLP) *
-
-
-[TIP]
-====
-More AI here <<jme3/advanced/atom_framework/ai#,ai>>
-====
-
-
-
-== Quick start
-
-Source code: link:https://code.google.com/p/magic-card-game-jme3/[https://code.google.com/p/magic-card-game-jme3/]
-
-Forum link: link:http://hub.jmonkeyengine.org/forum/topic/atomix-tutorial-series-chapter-1-the-card-game/[http://hub.jmonkeyengine.org/forum/topic/atomix-tutorial-series-chapter-1-the-card-game/]
-
-Design:
-
-Issues:
-
-
-== Screenshot
-
-Here is some more screen shots
-
-image::http://farm9.staticflickr.com/8546/8616981856_4d9755f034_z.jpg[8616981856_4d9755f034_z.jpg,width="300",height="",align="center"]
-
-
-Preview Video:
-[video]link:http://youtu.be/H3JSPOqeKSE[/video][http://youtu.be/H3JSPOqeKSE[/video]]
-
-
-== FIRST RUN
-
-
-=== STEP 1) Download and Setup:
-
-Full complete project download: Download from SVN
-Starter project (with assets) download: Download from SVN
-
-
-==== STEP 2) Atom framework:
-
-<<jme3/advanced/atom_framework#, Atom Framework>>
-Click to this topic to learn how to setup Atom, AtomAI, Groovy and stuffs…
-
-
-==== STEP 3) First run:
-
-Copy the complete working code and run the game, enjoy it for a while!
-Now go back and make another project with the base starter code.
-After refactoring, you should have the game runing succesfully and just show up the main menu.
-
-
-[TIP]
-====
-Atom framework documentation is here to read: <<jme3/advanced/atom_framework/docs#,docs>>
-====
-
-
-
-== Asset making
-
-In asset making phase, we will make 3D Models of the card, table in Blender. With appropriate textures in PTS and Shader in JME3.
-
-After that we will make| import a few very famous Card character model and skills to make the exceed the gameplay's fun!
-<<jme3/atomixtuts/cardsgame/assets#, Detailed Assets Making process>>
-
-
-== Programming
-
-
-=== Java & Groovy
-
-Now the prepare steps are almost complete, we start coding our game!
-
-
-[IMPORTANT]
-====
-This will be a big but interesting challenge for who really want to start a serious game development career and even for who just want to learn how to do it.
-====
-
-
-Groovy syntax is very similar to java, in fact you can use all java syntax in groovy plus almost time, it’s much more shorter than writing code in a Java version.
-[quote]
-____
-I can present my self almost an artist (60% vs 40% of a programmer :p ).. So, i prefer doing cool stuffs instead of hard stuffs. That’s why i played with both Java and Groovy. In this section, from time to time, you will find how Groovy save your life with clean and bright syntax instead of verbose big bad Java here and there.
-____
-
-You can get started with groovy in just few hours here. I also will explain a little bit of Groovy in the way.
-
-<<jme3/scripting#, Read more about Groovy Scripting>>
-
-
-==== Setup Atom framework
-
-
-[IMPORTANT]
-====
-Remember to download and install the Atom framework with the instruction above!
-====
-
-
-
-==== Detailed Implementation
-
-Checklist of what we going to implementation in this tutorial:
-
-*  GameStage and Gameplay
-**  Card gameplay elements (Game, Turn, Phase,..)
-**  GameWorld
-**  Select/Picking
-**  Start/pause
-**  Save/load game states
-
-*  Entities
-**  Card
-**  More
-
-*  States
-**  Menu
-**  InGame
-**  Loading
-
-*  Managers
-**  StageManager
-**  GUIManager
-**  GamePlayManager
-
-*  Controls
-**  SelectControl
-**  CardEntityControl
-
-
-Detailed <<jme3/atomixtuts/cardsgame/programming#,programming>>
-
-
-== Scripting
-
-
-[TIP]
-====
-For more JME3 Scripting <<jme3/scripting#,scripting>>
-====
-
-In this game, Groovy script will envolved in:
-
-*  Rule
-*  EffectText
-*  In-house card editor
-
-More insights,
-Rule are implemented with groovy script
-Card's Effect are implemented with groovy script. You can procedure the script 2 two ways:
-
-.  parse from original EffectText ripped from the internet, via OpenNLP
-.  Write it your self with the help of the Editor
-
-I always make a small in-house editor for every of my small games (before I integrate it into the SDK for larger project with tedious tasks with standardlized-professional workflow).
-
-Detailed <<jme3/atomixtuts/cardsgame/scripting#, Card games Scripting>>
-
-
-== AI
-
-AI (aka Artifact Intelligent):
-
-In this section I want to introduce the AtomAI library. It named after Atom project but in fact it’s just a bunch of wrapper for existed contributed and open-source libraries in various aspects of AI area: FSM, Behavior Tree, Decision Tree, Learning machine…
-
-
-[IMPORTANT]
-====
-In the source code the dependencies in AtomAI is removed. Just the class that this game used are kept!
-====
-
-
-Futher more, I added a lot of +++<abbr title="Graphical User Interface">GUI</abbr>+++ tools to deal with creating and combining sophisticated AI.
-
-....
-  For this Magic cardgame, I only use two simplest AI technique : Behavior/Decision Tree and Minimax, as simple as shorter than 500 lines of code. But the resulted Card AI can play with human newbie opponent and even can win sometimes. Our implementation in java or groovy already have Data Model supported by AtomAI library.
-....
-
-Detailed AI implementation <<jme3/atomixtuts/cardsgame/ai#,ai>>
-
-
-== Advanced techniques
-
-
-[IMPORTANT]
-====
-You generally dont want to go too deep in your first tutorial! :p So consider reading further than this. Those below techs are tied specificly to this game and also my very personal experiences!
-====
-
-
-*  Use Webharvest to collect useful data for your game.
-*  And Groovy to config instead of XML or plain-text
-*  Groovy to make an in-house cards editor
-*  OpenNLP to process EffectText of the orginal card
-*  ANTRL to build an DSL language suite to descible effect chain
-
-Detailed introduction <<jme3/atomixtuts/cardsgame/adtechs#,adtechs>>
-
-
-== Conclusion
-
-After a few thousands LoC game, I hope you guys find something useful to start working with our powerful engine JME3. In this first tutorial, I don’t want to go too much and too soon into technical problems. That’s not the way to go! ;-P
-
-....
-  In the next tutorial of the series, you will go straight in a bigger challenge with I think will give you more inspirations: “A Medieval RPG game” -  with story telling and cinematic. That’s it, a real game template which you can expand to make a full blown game.
-....
-
-
-[TIP]
-====
-Next tutorial: A Medieval RPG game - <<jme3/atomixtuts/bladegame#, Blade of the Immortals>>
-====
-
-But that’s enough for this month. I planed to stop a little bit to listen to feedbacks from you guys in how i can improve the tutorials or what I should go more into detail.
-
-Big Thanks,
-
-Atomix

+ 0 - 80
src/docs/asciidoc/jme3/atomixtuts/cardsgame/adtechs.adoc

@@ -1,80 +0,0 @@
-= adtechs
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== ADVANCED TECHNIQUES
-
-It seems like this example project just lead you through the most basic things you can do with JME3, but… It’s not totally true. I also want to show some advanced-cool techniques in which developers and artists can find helpful in their other projects. Those are:
-
-*  Web harvest
-*  Groovy data/config scripting
-*  Groovy to make an in-house cards editor
-*  OpenNLP to process EffectText of the orginal card
-*  ANTRL to build an DSL language suite to descible effect chain
-
-But I will not go too much into detail of the underlying techniques here but the detail implementation at my side for this game!
-
-Anyway, these advanced-cool techniques is still pretty specific to this game, so I bring it to another section to help you focus in the main parts in the first tutorial. If you still interest read futher :p
-
-
-=== Web harvest
-
-It comes the time in the project when you want to find a lot of references. Or, even want to find information which you know already been somewhere on the internet. Yeah! Me too. At that time, I meet Web harvest, one of the most useful tool that I use from time to time and also try my best to master it!!
-
-If you got time just read a little bit about it to get the basic idea of what it is and what it for. In this project I want to make data by combining things from the internet for the Card game… Dont call me pirate even if I’m truly one. I use some source in the internet to harvest the information in the Yugioh Card and Packs, like description, attack, defend point…etc. and save it in to… Groovy script.
-
-
-[TIP]
-====
-You can take a look at my webhavest configuration file here , but use them as your own risk against the law :p!
-====
-
-
-
-=== Groovy data scripting
-
-It comes the time when you don’t want to use XML and all other things to make config and text data file, cause you just love the short and briliant syntax of Groovy. Me too… again!
-
-In Atom framework, I used Groovy to make game configuration, dialogue, cinematic scripting, facial scripting, AI scripting and even a whole GAME! That’s why I also use Groovy to save the infomations of the cards. Lucky me, Web harvest also can play with groovy like a charm, so benefit.
-
-Detailed technique should be shown in an “in-deep” topic, here I just show a few pictures what I’ve done with this two techs for this card game: :woot: :woot:
-'''
-
-image:http://farm9.staticflickr.com/8383/8616233293_aac77bc87e_c.jpg[8616233293_aac77bc87e_c.jpg,width="",height=""]
-
-
-=== GroovyEditor
-
-Before you start . Go <<jme3/advanced/scripting#,scripting>>
-
-
-=== OpenNLP
-
-
-==== OpenNLP introduction
-
-OpenNLP is …
-
-
-==== How it help?
-
-
-=== ANTRL
-
-
-==== ANTRL introduction
-
-ANTRL is….
-
-
-==== How it help?
-
-In fact, Groovy also provide DSL mechanisim . So in the first …
-
-But , ANTRL have better Java integration so ..

+ 0 - 361
src/docs/asciidoc/jme3/atomixtuts/cardsgame/ai.adoc

@@ -1,361 +0,0 @@
-= ai
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== CardsGame: AI
-
-Now back to the basic, in a general card game, gameplay consist of fews ideas:
-
-.  Which card to choose
-.  Which state of that card to choose
-
-In a magic card game, two opponents including AI should concern a few more and how to answer these question to defeat the other:
-
-*  Which magic card support/destroy which card
-*  How to get Best health point and best damage
-
-
-== A – Tattic and stragegies
-
-Now I kind of don’t want to write much about AI in the first tutorial but let’s go, it wont take too long.
-
-In this game, the AI should have appropriate stragegies from Phase to Phase, even though, we should have a global stragegy for each round. Here are “naive” stragegies of the magic card AI:
-
-
-=== Summon Cards (Main phase 1&2):
-
-In the MainPhase, if you can summon, that mean there is card for you to have a valid summon. Wisely choose one option:
-
-
-==== - STRAGEGY 1) Choose the biggest attack/defend card.
-
-When you don’t have enough appropriate tribute cards to summon a “many stars” Card
-
-.  Just summon the biggest attack\defend card you have.
-.  To decide to summon (attack||defend), check what cards are in the field at the moment and compare your cards to your opponent cards, if the result is :
-..  “GoodToAttack” – choose Biggest Attack – Attack State
-..  “ShouldDefend” – choose Biggest Defend – Defend state
-
-.  summon it, and to the next Phase
-
-
-==== - STRAGEGY 2) Choose fews smallest card to tribute and summon a biggest one.
-
-When you HAVE enough appropriate tribute cards to summon a “many stars” Card (always with big attack/defend points and have effects)
-
-.  Choose the “biggest” and “most many stars” card.
-.  Choose the “smallest” cards enough to tribute to summon this card.
-..  If you can not even summon anything, have to Pass (by the rule).
-
-.  Futher, if there is no card in your ground mark the Brain with “Dangerous situation” and Pass.
-
-——
-
-
-=== Use support Cards (every action phases):
-
-In every action phase, except for DrawPhase and Endphase, you can use support card like MagicCard, TrapCard…etc. We can design a function to evaluate thoose card by how good is going to be when called in the game, but for the time being, we use such simplest tragagy:
-'''
-
-
-==== STRAGEGY 3) Use all the support cards in one turn
-
-That mean you are very hungry for the final win. It’s not always intelligent to do so in the POV of a professional duelist but hey… Ok. Now we want to pull all out support cards in one turn.
-'''
-
-
-==== STRAGEGY 4) Category cards in the game
-
-You should devide the support card and its effect to type and handle it by type, that’s the naive way but appropriate for DecisionTree technique we used here.
-'''
-
-Q&amp;A
-
-.  Q: How many type of support card are there?
-.  A: Trap card can flip whenever opponent take action like summon or attack. Magic card can do almost every effect from increase healpoint to destroy everything, change the field
-
-.  Q: How many type this naive AI know how to use?
-.  A: Many type of support card and effect are there in the real game but the AI use a “DecisionTree” technique just use a few which you know exactly what it do. For more complicated intelligent, we have to use complicated AI model like Neutral network or Genetic Algorimth..:
-
-*  o) Support Point Card: Card that increase/decrease the demon cards point.
-*  o) Heal Card: Card that increase/decrease the opponents point directly.
-*  o) Special Summon Card: Card that can bring demon card to the field in special way.
-*  o) Destroy/Clean Card: Card that destroy demons or other support card
-*  o) State Constraint Card: Card that lock or unlock the Limit of the game, like noActtack, noDefend..
-
-——
-
-
-==== STRAGEGY 5) Bigger biggest – Smallest smaller
-
-- Q: Which Support Point Card support to which demon?
-
-- A: You want to combine a biggest possible Card. So all biggest support card to the biggest demon. In oposite, you want to decrease all the demon of opponent on the field to the point that you can destroy it by attack or can not attack you anymore. So you just try to find the way to decrease those attack point to
-
-*  o) the smallest defend point of your defend demon if you have any defend demon
-*  o) or smallest attack point if you only have attack demon
-*  o) or 0 if you have no demon
-
-We can have sotisphicated way to distribute thoose support point but just do it as simple as possible.
-'''
-
-
-=== Decide what to do:
-
-
-==== STRAGEGY 6) Attack who and how? Decide to attack or defend
-
-Image you have a few demons in the field to attack your opponent.
-
-
-===== Step1, first glance calculation:
-
-There is 3 situation here:
-
-.  All your demon are better than your opponent’s current avaiable cards, so you will not lose any health point in the next turn, even if your opponent attack back. It’s called Dominance in game theory   
-.  In our game, this situation call “GoodToAttack”
-.  You have a few better and a few worse, you want to attack. – This situation call “Average” and need futher calulation.
-.  You can not attack at all, or lost points. So you should switch to defend. – This situation call “ShouldDefend”. (Not to mention: Affaid of trap card will flip when you take action?)
-.  In fact, 3 above situations can be calculated by dertemine “forecast” result health point of two opponents.
-
-
-===== Step2, further calculation:
-
-Apply the attack of all your the demons to each of your opponent demons and calculate the result points of both, call it a case. Best case is you win directly, less good case is you cause damage a lot, worse case, you should not attack cause you lose or lost points, it’s a bad idea.
-
-
-===== Step3, Apply:
-
-After finish calculation, you apply the whole case in the current turn.
-'''
-
-
-==== STRAGEGY 7) Dangerous – Prevent attack | GoodToAttack – Prevent deffend
-
-The state constraints are very powerful stragegy when you can use it.
-If you in Dangerous situation, which your AI brain mark. You can prevent your opponent not to attack in a few rounds or forever. In opposite, you can prevent your opponent to take defend by the opposite constraint.
-If you only have the magic card to constraint one card, use it with the biggest or smallest card possible so your benifit is maximum!
-
-The usage of Heal Card ,Destroy/Clean Card,Special Summon are trivial and pretty obvious by combining the previous stragegy so I ommited this part! :p
-'''
-
-
-== B-AI Techs
-
-As the result of making a sotiphicated AI, AI common techniques are used in mixed form, specific with the native of languages and tied to the game or the game engine. 
-
-But it's a good idea to clarify some parts of them to help you see the design more clearly and recoginize the pattern for your futher developing.
-
-It's also worth to mention some patterns that already used in JME3 here and there: like State pattern, .
-
-
-=== Decision/Behavior Tree
-
-Decision/Behavior Tree
-
-From wikipedia 
-
-In this game, Decision/Behavior Tree is not metioned as a implementation of Data base Decision/Behavior Tree like common in AI playground, but a structure to define actions and behaviours, that's a tree. Whatever your tree building techniques is, the Tree than decide very separation situations in a nested form.
-
-That's why Decision Tree is pretty straight forward for almost programming language (via built in branching controls, such as : switch or if/else ).
-
-In this game, Decision Tree help in organize situations in each phases.
-
-
-=== Finite State Machine
-
-In this game, Finite State Machine help to implement simple Card Character AI.
-
-
-=== MiniMax
-
-In the previous section, we talked about “Forecast what will happen in a few next rounds”, if you know the result, you can definitely choose a most appropriate path. There is a related problem in the field of AI Tactic, called Minimax. The basic idea of minimax is .
-
-From wikipedia 
-
-In this game, MiniMaxing is a little bit different from what you see in a normal Board/Chess game for example. MiniMaxing here help to evaluate the DesisionTree in a short term (mean short in time and light in processing space..)
-
-
-=== FuzzyLogic
-
-FuzzyLogic  is 
-
-link:http://en.wikipedia.org/wiki/Fuzzy_logic[http://en.wikipedia.org/wiki/Fuzzy_logic]
-
-In this game, FuzzyLogic is applied to extract the features and the situation from the game state and help decide what situation its it. Its upper layer is Case base (formed by more exact , accurate AI situation model)
-
-
-=== CaseBase
-
-
-== C-AtomAI usages
-
-
-== D-Implementation
-
-In above sections, we already declare a few rules which can have us to filter out which card are in hand, which card are in grave, ground, magic… etc. Later we will use them as ultilites in the AI.
-
-The first try to implement the AI
-
-[source,java]
-----
-
-package magiccard.gameplay.ai
-
-import magiccard.*
-import magiccard.gameplay.*
-import static magiccard.gameplay.TurnPhase.TurnPhaseType.*
-/**
- * This class is the AI for playing YugiOh Magic Card game.
- * The main technique used is DecisionTree & NeutralNetwork to decide actions
- */
-public class CardPlayerAI {
-    enum AILevel {Starter,Normal,HardCore,Duelist,Best;
-        int deep;
-    }
-    AILevel level;
-    CardGamePlay gamePlay;
-    CardPlayer player;
-    enum StragegySituation {GoodToAttack,ShouldDefend,Unknown,Dangeous}
-    StragegySituation situation= StragegySituation.Unknown;
-    def memories = [:]
-    // The list of special card (id) that will have higher priority at any time
-    def listOfSpecialCards = []
-
-    /**
-     *AI sepecific params
-     **/
-    int maxTime = 5000
-    int maxSteps = 500
-    int maxBranch = 50
-    int maxGuess = 5
-
-    int randomness = 30
-
-    // save delayed action
-    def actions
-    public CardPlayerAI(CardGamePlay gamePlay){
-        this.gamePlay = gamePlay;
-        this.actions = []
-    }
-
-    public String toString(){
-        return “AI level : “+this.level.toString() + ” status :” + this.situation.toString()
-    }
-    public int think(){
-        int startTime = System.currentTimeMillis()
-        if (gamePlay.currentTurn.currentPhase.type == MainPhase){
-            // try to summon
-            if (!gamePlay.currentTurn.currentPhase.monsterSummoned){
-                def summonableCards = player.hand.findAll{card-> canSummon(card)==true};
-                if (!summonableCards.isEmpty()){
-                    def bestCard = summonableCards.max{card-> card.attack}
-                    actions<
-            delayedAct()
-        }
-
-        actions.clear();
-    }
-    //self action
-
-    void summon(Card card){
-        gamePlay.notifyMoveCard(card,”enableHover”)
-        gamePlay.fromHandToGround(card);
-        gamePlay.currentTurn.currentPhase.monsterSummoned = true;
-    }
-    /**
-     * MINIMAX SUPPORT
-     * See the game as the minimum forecastable loss problem and calculate the case
-     * In fact, you can use minimax as a base heristic case and then extend
-     */
-
-    /**
-     * CASE BASE SUPPORT
-     * Not for a naive approach anymore.
-     * In fact, you can build a heristic case and calculate the result in a few next round to see if the value you gain (win) or lost is sastified
-     */
-    def tryCase(Case aCase){
-        return result;
-    }
-    def askForSelect(type,inCardList,info,condition){
-
-    }
-    public Case findBestSummonCase(){
-
-    }
-    public Case findBestMagicCase(){
-
-    }
-    public Case findBestSupportCase(){
-
-    }
-    public Case findBestOveralCase(){}
-
-    // self evaluation
-    public float evalGoodToAttack(Card card){
-
-    }
-    public float evalGoodToDefend(Card card){
-
-    }
-    /* This function evaluate the value of these two cards when the AI choose to support targetCard with the approriate supportCard*/
-    public float evalGoodToSupport(Card targetCard,Card supportCard){
-
-    }
-    /* This function evaluate the value of this card when they want to keep or discard it by purpose */
-    public float evalGoodOveral(Card card){
-
-    }
-    // Rule
-    public boolean canSummon(Card aCard){
-
-        // enough tribute
-        int stars = aCard.level.toInteger()
-        boolean enoughStar=false;
-        if ( stars > 6){
-            if (stars – 5 > player.ground.size()){
-                enoughStar =true
-            } else {
-                enoughStar =false
-            }
-
-        } else {
-            enoughStar=true;
-        }
-        //(!aCard.summonCancel) && && sastifySummonCondition(aCard)
-        return (enoughStar && aCard.isMonsterCard());
-    }
-
-}
-
-----
-
-And the way to call it … CardGamePlay 
-
-[source,java]
-----
-
-            case MainPhase:
-                if (!currentTurn.player.aiPlayer){
-                    if (isPlayerChangePhase(MainPhase)){
-                        nextPhase()
-                    } else {
-                        humanSelectFunction();
-                    }
-                } else {
-                    println(currentTurn.player.ai);
-                    currentTurn.player.ai.think();
-                    currentTurn.player.ai.act();
-                }
-
-----
-
-The fun things here are we delayed Action we want the AI and save to Actions list made from Closure. In the main loop, we wait till ai.act is called then execute all the delayed action. The power of Groovy once again shown! By this technique we can easily introduce paralel computing with an cool ulitities of Groovy named <<jme3/atomixtuts/cardsgame/gpars#,GPars>>. But we don’t use it right now though ! 
-
-:roll:

+ 0 - 162
src/docs/asciidoc/jme3/atomixtuts/cardsgame/assets.adoc

@@ -1,162 +0,0 @@
-= assets
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== The Card:
-
-
-[TIP]
-====
-In my example,for the Front textures of the cards, I use the orignal Yugioh Card game, but you can make your own if you want!! (prevent copy right issues)
-====
-
-
-
-=== The Card Model:
-
-The card model made of a Box with side faces deleted. The two remain faces has some change in UV, instead of the have exactly the same UV, they share the 50-50% vertical areas. Why? Cause in the shader we will modify the way to calculate UV and use two different diffuse for front face and back face. :p This is very cool thing to learn!
-
-image:http://farm9.staticflickr.com/8104/8617106224_e0c494dbf6_z.jpg[8617106224_e0c494dbf6_z.jpg,width="",height=""]
-
-
-=== The Card material:
-
-After import from Blender, the importer made a default Lighting material for the model. So basicly we want to change that to our approriate material.
-
-We make it by creating 3 new files: *CardMat.j3md* , *CardMat.j3m*, *SimpleCard.frag* ; and go to the Libraries section, where the TestData package is, copy the 4th file: *ColoredTexture.vert*.
-
-....
-  That’s basic how the Material system in JME works. 4 things combine:
-  - **CardMat.j3md** is the Material definition (MatDef).
-  - **CardMat.j3m** an instance with parameter s like textures, colors..etc
-  - **SimpleCard.frag** : the fragment shader which choose by the MatDef
-  - **ColoredTexture.vert**: The vertex shader which choose by the MatDef
-....
-
-Below show the detail content of the Material file in JMP and explain why for newbie in GLSL:
-
-image::http://farm9.staticflickr.com/8521/8616051519_7c8c32ee1a_c.jpg[8616051519_7c8c32ee1a_c.jpg,width="",height="",align="center"]
-
-
-
-=== CardMat.j3md
-
-[source,glsl]
-----
-
-MaterialDef Card {
-
-    MaterialParameters {
-        Texture2D ColorMap
-        Texture2D ColorMap2
-        Color Color (Color)
-        Boolean MixGlow
-    }
-
-    Technique {
-        VertexShader GLSL100:   MatDefs/ColoredTextured.vert
-        FragmentShader GLSL100: MatDefs/SimpleCard.frag
-
-        WorldParameters {
-            WorldViewProjectionMatrix
-            Time
-        }
-
-        Defines {
-            GLOW : MixGlow
-        }
-    }
-
-}
-
-----
-
-
-=== SimpleCard.frag
-
-[source,glsl]
-----
-
-varying vec2 texCoord;
-
-uniform sampler2D m_ColorMap;
-uniform sampler2D m_ColorMap2;
-uniform vec4 m_Color;
-uniform bool m_MixGlow;
-
-uniform float g_Time;
-
-void main() {
-    vec2 uv = texCoord;
-    vec4 texColor;
-    vec4 color;
-
-    if (uv.x > 0.5){
-        uv.x = (uv.x – 0.5) *2;
-        texColor = texture2D(m_ColorMap, uv);
-    } else {
-        uv.x = uv.x *2;
-        texColor = texture2D(m_ColorMap2, uv);
-    }
-    vec2 uvc = uv;
-    uvc.x = uv.x – 0.5;
-    uvc.y = uv.y – 0.5;
-    vec2 borderSize = vec2(0.05,0.05);
-    #ifdef GLOW
-        if (m_MixGlow == true){
-                float glowV=sqrt((uvc.x)*(uvc.x)+(uvc.y)*(uvc.y));
-                vec4 glowC = mix(vec4(0.9,0.8,0.1,1),vec4(0.4,0.7,1,1),sin(g_Time));
-                color = mix(texColor,glowC,glowV);
-
-                if ((uv.x <borderSize.x || 1-uv.x<borderSize.x)||(uv.y <borderSize.y || 1-uv.y<borderSize.y)){
-                    color+= vec4(0.8,0.8,0.1,0.5);
-                }
-        } else {
-            color = texColor;
-        }
-    #else
-        color = texColor;
-    #endif
-
-    gl_FragColor = color;
-}
-
-----
-
-This GLSL code can be obviously explain like this:
-
-*  uv is the coordinate for the diffuse map. In our model, we modified the UV, so if the “x”-horizontal value of vertex coordinates is bigger than 0.5, than mean it in the back( that’s the trick I said), use the ColorMap2 texture.
-
-*  uv2 is the coordinate to put the highlight for the border of the card, the value of highlight controller by the value of “sin(time)” … that means it goes up and down like a wave.
-
-That’s it! No big deal!
-
-
-==== Note:
-
-texCoord is a Varying – mean it transfered from Vertex shader
-Time is global Attribute – mean it sent to openGL from JME renderer
-ColorMap – ColorMap2 are Uniform (s) – mean they are parameters from the user set to the Shader
-
-
-== The Table:
-
-The table of this card game is a design from the orginal game. It divide into two main area:
-The ground and sides
-The ground divided by two for each opponents
-The side divided to some areas, including: Deck block, Magic block, Fusion block…ect
-
-
-=== Table Texture:
-
-The table represent by a single quad with this texture. I did it in PTS but you can also do the same thing in Gimp or even paint.net (which one you prefered). The source PTS file is in the Project assets if you want to look into.
-
-
-image::http://farm9.staticflickr.com/8251/8617035018_bf7db17d09_z.jpg[8617035018_bf7db17d09_z.jpg,width="",height="",align="center"]
-

+ 0 - 11
src/docs/asciidoc/jme3/atomixtuts/cardsgame/gameplay.adoc

@@ -1,11 +0,0 @@
-= gameplay
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== CardsGame: gameplay

+ 0 - 1097
src/docs/asciidoc/jme3/atomixtuts/cardsgame/programming.adoc

@@ -1,1097 +0,0 @@
-= programming
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== CardGame - Programming
-
-
-=== Introduction
-
-This is the section descibled the detail process of Programming the card game in Java, Groovy
-
-Almost the tasks are trivial and suite for beginers and newbies to JME3. 
-
-FYI, some part require knowledge:
-
-.  advanced Java concept such as multi-threading, serialize … Groovy such as Closure
-.  JME3 like …AppState, picking… 
-.  or knowledge of Atom framework 
-
-which you should read before start here. The links help you can revise your knowledges:
-
-<<jme3#, JME3 Advanced>>
-<<jme3/scripting#, JME3 Scripting>>
-<<jme3/advanced/atom_framework#, AtomFramework >>
-
-
-=== Short list
-
-Checklist of what we going to implementation in this tutorial:
-
-*  GameStage and Gameplay
-**  Card gameplay elements (Game, Turn, Phase,..)
-**  GameWorld
-**  Select/Picking
-**  Start/pause
-**  Save/load game states
-
-*  Entities
-**  Card
-**  More
-
-*  States
-**  Menu
-**  InGame
-**  Loading
-
-*  Managers
-**  StageManager
-**  GUIManager
-**  GamePlayManager
-
-*  Controls
-**  SelectControl
-**  CardEntityControl
-
-
-
-=== GameStage and GamePlay
-
-Here is where you clean up your game design, and write down a few most obvious Classes that build up the game.
-
-*CardGame* : obvious
-
-*Card* : represent a Card in the game
-
-*CardPlayer* extends *Player*: a Player in Atom framework have basic ID, name, character…, already have built-in mechanism to go online -multiplayers if need!
-
-*CardTable* extends *GameLevel*: represent the Table where two opponent sit and duel. Of course we can have different levels (in different Modes) like when Player traveling around and play in the future!
-
-*CardMatch* : a Match can be held between two CardPlayer opponents
-
-*Turn* : a Turn represent a Turn in this card game. Has index number and a point to a Player take that Turn. a Turn has 6 TurnPhase (s)
-
-*TurnPhase* : DrawPhase, MainPhase, MainPhase2… contains a bunch of CardAction
-
-*CardAction* : obvious. action taken of Player, like : add one more card in his hand and summon etc…
-
-see the full implementation in the source code. Detailed explanation below!
-
-
-=== Entities
-
-
-==== Card
-
-Consider the a Card as a most basic Entity.
-[ Warning: Don't mistake I'm going to use any kind of Composing Entity System here! ].
-
-An Card Entity should contains infomations relate to a real card in a card game, it also has a representation, which is a 3D Model in JME scenegraph. That’s why Card class extends SpatialEntity.
-
-....
-  SpatialEntity This is the handy parent class for classes in Atom framework which also holding Entity data, and has a Spatial as representation. Atom use a built-in two-way connection between the Entity – Spatial, a mechanism which helps you do almost anything you want with SpatialEntity (select-picking,enable/disable…ect)
-....
-
-Information relate to the orginal Magic card game:
-
-[source,java]
-----
-
-String cardId=”"
-String name = “”
-String picture = “”
-
-int attack = -1
-int defend = -1
-String cardType = “”
-
-String attribute = “”
-
-----
-
-[…full in the source code.The meanings are obvious.] 
-
-If you declare like this in Groovy, that mean each of these fields are a Property, which have basic generated Setter/Getter by Groovy compiler. We need one more attribute:
-Card orgCard
-
-This hold a link to the orginal Card in the CardLibrary, which keeps information of every card avaiable in this game. We will implement this class later. Card.groovy
-
-[source,java]
-----
-
-package magiccard.gameplay
- 
-import com.jme3.scene.Spatial
-import sg.atom.entity.SpatialEntity
-/**
-*
-* @author cuong.nguyenmanh2
-*/
-public class Card  extends SpatialEntity{
-    String cardId=”"
-    String name = “”
-    String picture = “”
- 
-    int attack = -1
-    int defend = -1
-    String cardType = “”
- 
-    String attribute = “”
-    String cardSubType = “”
-    int level = -1
- 
-    String summonRule = “”
-    String effect = “”
-    String desc = “”
-    String longDesc = “”
-    String character = “”
-    String flipScript=”"
-    String effectScript=”"
-    String rarity=”"
-    Card orgCard
- 
-    public Card(String name){
-        super(name,name)
-        this.name = name
-    }
- 
-    public Card(Card orgCard){
-        super(orgCard.name,orgCard.name)
-        this.orgCard = orgCard
-        this.cardId = orgCard.cardId
-        this.name = orgCard.name
-        this.picture = orgCard.picture
-        this.attack = orgCard.attack
-        this.defend = orgCard.defend
-        this.cardType = orgCard.cardType
-        this.level = orgCard.level
-        this.desc = orgCard.desc
-        this.longDesc = orgCard.longDesc
-    }
-}
-
-----
-
-
-==== Show the card
-
-According to the Atom framework, the representation part of a Card should be provided by a EntityFactory. In this implementation, I just ask the GameLevel – The CardTable, to made it up, cause it’s really simple.
-
-Now consider a Card spatial built from a flatten 3d box and 2 sides: front &amp; back with approriate textures title FrontTexture and BackTexture. In YugiGame, BackTexture are the same for all the Card, remember that we already set it in the SceneEditor! Now our job is to load the Card model and change the FrontTexture to the path in card.picture.
-
-This is a part of the CardTable class which create and “attach” the Card spatial to the levelNode, add two more controls for movement handle and select handle. Simple isn’t it?
-
-[source,java]
-----
-
-    public void createCardOrg(){
-        cardOrg = ((Node) ((Node) assetManager.loadModel(“Models/Cards/Template/card1.j3o”)).getChild(“Card”)).getChild(“Cube1″);
-    }
-    Geometry createCard(Card card) {
-        // extract the card info
-        String path = card.picture
-
-        // create the geometry
-        Geometry newCard = (Geometry) cardOrg.clone();
-        Material cloneMat = newCard.getMaterial().clone();
-        cloneMat.setTexture(“ColorMap2″, assetManager.loadTexture(path));
-        newCard.setMaterial(cloneMat);
-        //cloneMat.setBoolean(“MixGlow”,true);
-        levelNode.attachChild(newCard);
-        card.spatial = newCard;
-        newCard.setLocalScale(-0.4f,-0.4f,0.4f)
-        // attach the control
-        newCard.addControl(new CardSpatialControl(worldManager,card));
-        newCard.addControl(new CardSelectControl(worldManager,gamePlayManager));
-        return newCard;
-    }
-
-----
-
-
-==== Card movement
-
-....
-  For this kind of game, I just want to introduce most basic movement form, Steering movements with brace, veclocity..etc will be introduced in next tuts. 
-....
-
-By basic movement forms, I want to talk about: 
-
-....
-– MOVETO: Move smoothly in a straight line from one point to another. 
-– ROTTO: Rotate smoothly by Quaternion from one angle to another. 
-– GIGGLE : Shaking, for example prepare to explode! 
-
-....
-
-These 3 basic movement types are already enough to compose quite fascinated effects if you know how to. See by your self in the video in the first post! The most normal and obvious way to put movements into a Spatial in JME3 is to make an Control, name it CardSpatialControl. 
-
-[source,java]
-----
-
-package magiccard.gameplay
-
-import com.jme3.scene.control.AbstractControl
-import com.jme3.math.Vector3f
-import com.jme3.math.FastMath;
-import sg.atom.entity.SpatialEntityControl
-import sg.atom.stage.SelectManager
-import sg.atom.stage.WorldManager
-import com.jme3.math.Quaternion
-/**
- *
- * @author hungcuong
- */
-public class CardSpatialControl extends SpatialEntityControl{
-
-    boolean stopMove = false;
-    boolean stopRot = false;
-    boolean gigle = false;
-    Vector3f targetPos;
-    Vector3f oldPos;
-    Quaternion oldRot;
-    Quaternion targetRot;
-    float timeRot = 0;
-    float speedRot = 0.3f;
-    float speedPos = 0.04f;
-
-    public CardSpatialControl(WorldManager worldManager, Card card) {
-        super(worldManager, card);
-    }
-
-    void pos(Vector3f targetPos){
-        this.targetPos = targetPos.clone();;
-        this.oldPos = spatial.getLocalTranslation().clone();
-        stopMove = false;
-    }
-    void rot(Quaternion targetRot){
-        this.targetRot = targetRot.clone();
-        this.oldRot = spatial.getLocalRotation().clone();
-        timeRot = 0;
-        stopRot = false;
-    } 
-
-    public void controlUpdate(float tpf){
-        updatePos(tpf);
-        updateRot(tpf);
-        if (gigle){
-            updateGiggle();
-        }
-    }
-    void updatePos(float tpf){
-        if (targetPos!=null){
-            Vector3f newPos;
-            Vector3f currentPos = spatial.getLocalTranslation();
-            float dis = currentPos.distance(targetPos)
-            if (!stopMove){
-                if ( dis> speedPos){
-                    Vector3f force = targetPos.subtract(currentPos).normalize().mult(speedPos)
-                    newPos = currentPos.add(force)
-                } else {
-                    newPos = targetPos.clone();
-                    stopMove = true;
-
-                }
-                spatial.setLocalTranslation(newPos)
-            }
-
-        }
-    }
-
-    void updateRot(float tpf){
-        if (targetRot!=null&&oldRot!=null){
-            if (!stopRot){
-                Quaternion newRot = new Quaternion();
-                if ( timeRot <speedRot){
-                    newRot.slerp(oldRot,targetRot,(float)(timeRot/speedRot))
-                    timeRot += tpf;
-                } else {
-                    stopRot = true;
-                    newRot.set(targetRot)
-                }
-                spatial.setLocalRotation(newRot);
-            }
-        }
-    }
-
-    void updateGiggle(){
-        float x =(0.5f-FastMath.nextRandomFloat()) * 0.005f;
-        float y =(0.5f-FastMath.nextRandomFloat()) * 0.005f;
-        float z =0;
-        Vector3f oldPos=spatial.getLocalTranslation().clone();
-        spatial.setLocalTranslation(oldPos.add(x,y,z));
-    }
-}
-
-----
-
-
-==== More
-
-
-=== World
-
-First consider the Table a GameLevel. In that specific enviroment, cards are showed, moved rotated…etc..
-
-*Explanation:*
-The CardTable take care of 3 things: 
-
-....
-  
-  (1| Creating:
-....
-
-.  Its self from a 16×16 Quad and the Texture
-....  The Cards from the OrgCard model with appropriate picture
-....  The effects
-....  The 3D models
-
-....
-  (2| Destroying things in delayed fashion:
-....
-
-.  Explode the Card (cool effect!)
-
-....
-  (3| Calculate the postions,directions of all action triggered by GamePlay. Arrange and reArrange the cards in hands, in Deck. handPos,gravePos,groundPos, deckPos…etc
-....
-
-We need the world to calculate postions the card place and for the translating: the target position of which the card will head to. Remember that we made a Table texture from a 4×4 Grid. Now use that and do simple math ;O :
-
-This part
-
-*  load the level 
-*  create a deck
-*  load card models with texture (cover) and attach a CardControl to handle the Movement and highlight
-
-[source,java]
-----
-
-package magiccard.gameplay
-
-import com.jme3.asset.AssetManager
-import com.jme3.material.Material
-import com.jme3.math.ColorRGBA
-import com.jme3.math.Vector3f
-import com.jme3.scene.Node
-import com.jme3.scene.Geometry
-import com.jme3.scene.Spatial
-import com.jme3.scene.shape.Box
-import com.jme3.scene.shape.Quad
-import sg.atom.gameplay.GameLevel
-import sg.atom.stage.GamePlayManager
-import sg.atom.stage.WorldManager
-
-import com.jme3.material.RenderState
-import com.jme3.renderer.queue.RenderQueue
-import com.jme3.scene.shape.Sphere
-import com.jme3.math.Quaternion
-import com.jme3.math.FastMath
-import magiccard.stage.CardSelectControl
-import sg.atom.fx.particle.ParticleFactory
-import sg.atom.fx.particle.ExplosionNodeControl
-import com.jme3.light.PointLight
-import com.jme3.effect.ParticleEmitter
-
-class CardTable extends GameLevel{
-
-private Spatial cardOrg;
-AssetManager assetManager
-
-// Layout to position cards and table
-Vector3f center = new Vector3f(3,0,-5);
-float handLength= 2.5f
-float spaceBetweenCard = 0.5f
-float peakPos= 0.2f
-float boardSizeX = 16;
-float boardSizeY= 16;
-
-Vector3f scaledCardSize = new Vector3f(1.9f,2.7f,0.02f);
-Vector3f gridGapSize = new Vector3f(1,1,1);
-public static faceUpQuat = new Quaternion().fromAngles(0f,FastMath.PI,0f);
-public static faceDownQuat = new Quaternion().fromAngles(-FastMath.PI,-FastMath.PI,0f);
-List actions =[]
-
-public CardTable(GamePlayManager gameplay,WorldManager world,String name,String path){
-super(gameplay,world,name,path)
-assetManager = world.assetManager
-}
-
-Quaternion getCardRot(boolean faceUp){
-if (faceUp){
-return faceUpQuat.clone()
-} else {
-return faceDownQuat.clone()
-}
-}
-
-/*
-* Load level, override the method in GameLevel class
-*/
-public void loadLevel(){
-super.loadLevel()
-createCardOrg();
-createCardBoard();
-createEffects();
-}
-
-/*
-* Short for new Vector3f
-*/
-Vector3f vec3(float x,float y,float z){
-return new Vector3f(x,y,z);
-}
-
-/*
-* Create the Card board model
-*/
-public void createCardBoard() {
-//levelNode = new Node(“LevelNode”);
-
-Quad cardBoardShape = new Quad(boardSizeX,boardSizeY);
-Geometry cardBoard = new Geometry(“CardBoardGeo”, cardBoardShape);
-
-Material mat = new Material(assetManager, “MatDefs/ColoredTextured.j3md”);
-mat.setTexture(“ColorMap”, assetManager.loadTexture(“Textures/CardBoard/DiffuseTex.png”));
-mat.setColor(“Color”, new ColorRGBA(1, 1, 1, 0.9f));
-mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
-cardBoard.setMaterial(mat);
-cardBoard.setLocalTranslation(center.add((float)(-boardSizeX/2),(float)(-boardSizeY/2),0f));
-cardBoard.setQueueBucket(RenderQueue.Bucket.Transparent);
-
-levelNode.attachChild(cardBoard);
-}
-/*
-* For debuging positions
-*/
-public void createSphere(float size,ColorRGBA color,Vector3f pos){
-Sphere sh=new Sphere(8,8,size)
-Geometry sGeo = new Geometry(“S”,sh)
-Material mat = new Material(assetManager, “Common/MatDefs/Misc/Unshaded.j3md”);
-sGeo.material = mat
-mat.setColor(“Color”,color)
-sGeo.localTranslation = pos
-levelNode.attachChild(sGeo)
-}
-/*
-* Create the orginal Card model
-*/
-public void createCardOrg(){
-cardOrg = ((Node) ((Node) assetManager.loadModel(“Models/Cards/Template/card1.j3o”)).getChild(“Card”)).getChild(“Cube1″);
-}
-
-public void createDeck(CardPlayer player) {
-// create Cards for player
-
-player.currentDeck.cardList.eachWithIndex{card,i->
-//fromDeckToHand(player)
-def newCard = createCard(card)
-}
-arrangeDeck(player)
-}
-
-public void createHand(CardPlayer player){
-player.hand.eachWithIndex{card,i->
-//fromDeckToHand(player)
-def newCard = createCard(card)
-}
-arrangeHand(player)
-}
-
-Geometry createCard(Card card) {
-// extract the card info
-String path = card.picture
-
-// create the geometry
-Geometry newCard = (Geometry) cardOrg.clone();
-Material cloneMat = newCard.getMaterial().clone();
-cloneMat.setTexture(“ColorMap2″, assetManager.loadTexture(path));
-newCard.setMaterial(cloneMat);
-//cloneMat.setBoolean(“MixGlow”,true);
-levelNode.attachChild(newCard);
-card.spatial = newCard;
-newCard.setLocalScale(-0.4f,-0.4f,0.4f)
-// attach the control
-newCard.addControl(new CardSpatialControl(worldManager,card));
-newCard.addControl(new CardSelectControl(worldManager,gamePlayManager));
-return newCard;
-}
-
-CardSpatialControl getCardControl(Spatial spatial){
-return spatial.getControl(CardSpatialControl.class)
-}
-
-----
-
-These pieces help to find the exact location of card in each situation:
-
-*  ArrangeDeck
-*  ArrangHand
-*  CenterHandPos
-*  DeckPos
-*  GravePos
-*  GroundPos
-*  MagicPos
-
-[source,java]
-----
-
-public void arrangeDeck(CardPlayer player){
-int numOfCards = player.currentDeck.cardList.size()
-
-Vector3f centerDeck = getCenterHandPos(player);
-Vector3f gap = vec3(0.4f,0,0.02f);
-Vector3f handSize = vec3(0,0,0.5f);
-
-gap = handSize.divide(vec3(1,1,(float) numOfCards));
-player.currentDeck.cardList.eachWithIndex{card,i->
-//fromDeckToHand(player)
-def newCard = card.spatial
-
-//Quaternion rotPIY =new Quaternion().fromAngleAxis(FastMath.PI,Vector3f.UNIT_Y);
-//Quaternion rotPIZ =new Quaternion().fromAngleAxis(FastMath.PI,Vector3f.UNIT_Z);
-//Quaternion rotXYZ =new Quaternion().fromAngles(0f,FastMath.PI,0f)
-//newCard.setLocalRotation(rotXYZ)
-
-Vector3f cardPos = gap.mult(vec3((float)i,1f,(float)i));
-Vector3f deckPos;
-if (isCurrentPlayer(player)){
-deckPos =vec3(9f,-6.5,-5)
-} else {
-deckPos =vec3(-3f,6.5,-5)
-}
-newCard.setLocalTranslation(deckPos.add(cardPos))
-}
-}
-public void arrangeHand(CardPlayer player){
-int numOfCards = player.hand.size()
-
-Vector3f centerHand = getCenterHandPos(player);
-Vector3f gap = vec3(0.4f,0f,0.02f);
-float squareSize= boardSizeX-6f
-Vector3f handSize = vec3(squareSize,0f,0.02f);
-
-gap = handSize.divide(vec3((float) numOfCards,1,1));
-boolean faceUp = isCurrentPlayer(player);
-player.hand.eachWithIndex{card,i->
-//fromDeckToHand(player)
-def newCard = card.spatial
-
-Quaternion rotPIY =new Quaternion().fromAngleAxis(FastMath.PI,Vector3f.UNIT_Y);
-Quaternion rotPIZ =new Quaternion().fromAngleAxis(FastMath.PI,Vector3f.UNIT_Z);
-Quaternion rotXYZ =getCardRot(faceUp || gamePlayManager.debugMode)
-//newCard.setLocalRotation(rotXYZ)
-
-Vector3f cardPos = gap.mult(vec3((float)i,1f,(float)i));
-Vector3f handPos = centerHand.add(0f,0f,0f);
-//newCard.setLocalTranslation(handPos.add(cardPos));
-CardSpatialControl cc=getCardControl(card.spatial)
-cc.pos(handPos.add(cardPos))
-
-cc.rot(rotXYZ)
-
-}
-
-}
-
-void putToGrave(){
-
-}
-boolean isCurrentPlayer(CardPlayer player){
-return gamePlayManager.isCurrentPlayer(player)
-}
-
-Vector3f getCenterHandPos(CardPlayer player){
-Vector3f centerHandPos;
-float halfSizeY = (float)((boardSizeY – 0.3f)/2f);
-if (isCurrentPlayer(player)){
-centerHandPos = center.add(0f,-halfSizeY,0.5f)
-} else {
-centerHandPos = center.add(0f,halfSizeY,0.5f)
-}
-return centerHandPos;
-}
-
-Vector3f handPos(CardPlayer player,int index,boolean peak){
-Vector3f centerHandPos = getCenterHandPos(player)
-
-int numHandCards =player.hand.size()
-float indexf=0
-
-if (index == -1){
-numHandCards ++
-indexf = numHandCards
-} else if (index == -2){
-indexf = numHandCards + 2
-} else if (index == -3){
-indexf = numHandCards
-numHandCards = 5
-}
-horizontalPos = handLength * indexf + numHandCards
-
-Vector3f nextCardPos = vec3(0,horizontalPos,0).add(centerHandPos)
-
-if (peak){
-nextCardPos.add(vec3(0,peakPos,0))
-}
-return nextCardPos;
-}
-
-Vector3f deckPos(CardPlayer player){
-if (isCurrentPlayer(player)){
-return vec3(1,1,1)
-} else {
-return vec3(1,4,1)
-}
-}
-Vector3f gravePos(CardPlayer player){
-if (isCurrentPlayer(player)){
-return vec3(1,1,1)
-} else {
-return vec3(1,4,1)
-}
-}
-Vector3f groundPos(CardPlayer player,int index){
-if (isCurrentPlayer(player)){
-return vec3(-0.8f,-1.7f,-5).add(scaledCardSize.mult(vec3((float)index,0f,0f)))
-} else {
-return vec3(-0.8f,1.7f,-5).add(scaledCardSize.mult(vec3((float)index,0f,0f)))
-}
-}
-Vector3f magicPos(CardPlayer player,int index){
-if (isCurrentPlayer(player)){
-return vec3(-0.8f,-4.5f,-5).add(scaledCardSize.mult(vec3((float)index,0f,0f)))
-} else {
-return vec3(-0.8f,4.5f,-5).add(scaledCardSize.mult(vec3((float)index,0f,0f)))
-}
-}
-void fromDeckToHand(CardPlayer player,Card card){
-Vector3f nextCardPos=handPos(player,-3,false)
-CardSpatialControl cc=getCardControl(card.spatial)
-cc.pos(nextCardPos)
-//cc.faceUp()
-//cc.moveTo(nextCardPos,3)
-}
-void fromHandToMagic(CardPlayer player,Card card){
-Vector3f nextCardPos=magicPos(player,player.magic.size())
-CardSpatialControl cc=getCardControl(card.spatial)
-cc.pos(nextCardPos)
-cc.rot(getCardRot(false))
-
-}
-
-void fromHandToGround(CardPlayer player,Card card){
-Vector3f nextCardPos=groundPos(player,player.ground.size())
-CardSpatialControl cc=getCardControl(card.spatial)
-cc.pos(nextCardPos)
-
-}
-public Vector3f getCamPos(){
-return center.add(0f,-8f,20f)
-}
-
-
-----
-
-This is the update hook of the Level. We update it by clean up and execute delayed actions!!!
-
-[source,java]
-----
-
-public void simpleUpdate(float tpf){
-// see if anything queued
-for (Iterator it=actions.iterator(); it.hasNext(); ) {
-def action = it.next();
-if ((action.time -= tpf) <0) {
-action.do()
-it.remove();
-} else {
-// do nothing but wait
-}
-}
-}
-
-----
-
-Make a cool explosion effect by calling the Atom's ParticleFactory, play it when a card destroyed
-
-[source,java]
-----
-
-void destroy(CardPlayer player,Card card){
-addExplosion(card.spatial.localTranslation)
-CardSpatialControl cc=getCardControl(card.spatial)
-cc.gigle = true;
-actions<<[
-time:1f,
-do:{
-card.spatial.removeFromParent()
-}
-]
-}
-
-Node explosionPrefab;
-void addExplosion(Vector3f pos){
-def explosion = explosionPrefab.clone();
-explosion.localTranslation =pos.clone();
-/*
-levelNode.attachChild(flame);
-levelNode.attachChild(rain);
-levelNode.attachChild(spark);
-*/
-levelNode.attachChild(explosion);
-}
-
-void createEffects(){
-ParticleFactory pf = new ParticleFactory(assetManager);
-/*
-ParticleEmitter flame = pf.createFlame();
-flame.setLocalTranslation(new Vector3f(6f,4f,-5f));
-
-ParticleEmitter rain = pf.createRain(“”);
-rain.setLocalTranslation(new Vector3f(0,0,-5f));
-
-ParticleEmitter spark = pf.createSpark();
-spark.setLocalTranslation(new Vector3f(0,0,-5f));
-*/
-explosionPrefab = pf.createExplosionNode();
-explosionPrefab.getControl(ExplosionNodeControl.class).setMaxTime(2f)
-}
-
-----
-
-Load the card character 3d model for a specific card
-
-[source,java]
-----
-
-public void loadCharacters(){
-
-Quaternion rot= new Quaternion().fromAngleAxis(FastMath.HALF_PI,Vector3f.UNIT_X)
-/*
-Spatial demon = assetManager.loadModel(“Models/Demons/BlueEyeWhiteDragon/BlueEyes.j3o”);
-demon.scale(0.04f);
-demon.setLocalRotation(rot);
-levelNode.attachChild(demon);
-*/
-Spatial witch = assetManager.loadModel(“Models/Demons/Magicians/White/WhiteFemaleMagician.j3o”);
-witch.scale(0.5f);
-witch.setLocalTranslation(new Vector3f(3f,4f,-5f));
-witch.setLocalRotation(rot);
-levelNode.attachChild(witch);
-
-Spatial samurai = assetManager.loadModel(“Models/Demons/Warior/SamuraiWarior.j3o”);
-samurai.setLocalTranslation(new Vector3f(6f,4f,-5f));
-samurai.scale(0.5f);
-samurai.setLocalRotation(rot);
-levelNode.attachChild(samurai);
-
-/** A white, spot light source. */
-PointLight lamp = new PointLight();
-lamp.setPosition(getCamPos());
-lamp.setColor(ColorRGBA.White);
-levelNode.addLight(lamp);
-}
-}
-
-----
-
-
-=== Select
-
-For a card game, select is a very important game mechanic, in fact, you are nearly ask to select/choose somethings almost everytime. In Atom, I introduce a generic way to hook your select function into your code game mechanic. 
-This section is quite advance for who don’t familiar with groovy but keep your self cheerful cause you going to enjoy Groovy as much as I do! 
-
-Short: 
-
-Detailed: 
-
-For this card game, we will implement a few things in this designed mechanic:
-
-
-==== Select function:
-
-[source,java]
-----
-
-
-
-----
-
-
-==== Select condition:
-
-[source,java]
-----
-
-
-
-----
-
-
-==== Select Control:
-
-[source,java]
-----
-
-package magiccard.stage;
-
-import com.jme3.math.Vector3f;
-import com.jme3.scene.Geometry;
-import com.jme3.scene.Spatial;
-import sg.atom.stage.WorldManager;
-import sg.atom.stage.select.SpatialSelectControl;
-import magiccard.gameplay.CardGamePlay;
-import magiccard.gameplay.Card;
-import magiccard.gameplay.CardSpatialControl;
-import sg.atom.stage.select.EntitySelectCondition;
-
-/**
-*
-* @author cuong.nguyenmanh2
-*/
-public class CardSelectControl extends SpatialSelectControl {
-
-private Vector3f bigScale;
-private Vector3f orginalScale;
-private Vector3f orginalPos;
-private Vector3f peakPos;
-private boolean skipOutHover;
-private String currentFunction;
-private CardGamePlay gameplay;
-private Card card;
-private boolean isBigger = false;
-private boolean isPeak = false;
-private boolean isHighlight = false;
-
-public CardSelectControl(WorldManager worldManager, CardGamePlay gameplay) {
-currentFunction = “Normal”;
-this.gameplay = gameplay;
-}
-
-@Override
-public void setSpatial(Spatial spatial) {
-super.setSpatial(spatial);
-this.card = (Card) spatial.getControl(CardSpatialControl.class).getEntity();
-orginalScale = spatial.getLocalScale().clone();
-bigScale = orginalScale.mult(1.2f);
-orginalPos = spatial.getLocalTranslation().clone();
-}
-
-@Override
-protected void doSelected() {
-super.doSelected();
-//orginalScale = spatial.getLocalScale();
-//orginalPos = spatial.getLocalTranslation().clone();
-//peakPos = orginalPos.add(new Vector3f(0f, 0.4f, 0f));
-//spatial.setLocalTranslation(peakPos);
-//spatial.setLocalScale(bigScale);
-}
-
-@Override
-protected void doDeselected() {
-super.doDeselected();
-//spatial.setLocalScale(orginalScale);
-//spatial.setLocalTranslation(orginalPos.clone());
-
-}
-
-@Override
-protected void doHovered() {
-if (this.isHoverable()) {
-super.doHovered();
-//orginalScale = spatial.getLocalScale();
-EntitySelectCondition inHand = (EntitySelectCondition) gameplay.cardSelectRules.get(“inHand”);
-EntitySelectCondition inGround = (EntitySelectCondition) gameplay.cardSelectRules.get(“inGround”);
-if (inHand.isSelected(card)) {
-peak();
-bigger();
-highlight();
-} else if (inGround.isSelected(card)) {
-// The card is the ground
-highlight();
-}
-}
-}
-
-@Override
-protected void doOutHovered() {
-if (this.isHoverable()) {
-if (!this.skipOutHover) {
-super.doOutHovered();
-
-noPeak();
-smaller();
-noHighlight();
-
-}
-}
-}
-
-public String getCurrentFunction() {
-return currentFunction;
-}
-
-public void setCurrentFunction(String currentFunction) {
-this.currentFunction = currentFunction;
-}
-
-public void setSkipOutHover(boolean skipOutHover) {
-this.skipOutHover = skipOutHover;
-}
-
-public boolean isSkipOutHover() {
-return skipOutHover;
-}
-
-void bigger() {
-if (!isBigger) {
-spatial.setLocalScale(bigScale);
-isBigger = true;
-}
-}
-
-void peak() {
-if (!isPeak) {
-orginalPos = spatial.getLocalTranslation().clone();
-peakPos = orginalPos.add(new Vector3f(0f, 0.2f, 0.2f));
-spatial.setLocalTranslation(peakPos);
-isPeak = true;
-}
-}
-
-void noPeak() {
-if (isPeak) {
-spatial.setLocalTranslation(orginalPos.clone());
-isPeak = false;
-}
-}
-
-void smaller() {
-if (isBigger) {
-spatial.setLocalScale(orginalScale);
-isBigger = false;
-}
-}
-
-void highlight() {
-if (!isHighlight) {
-((Geometry) spatial).getMaterial().setBoolean(“MixGlow”, true);
-isHighlight = true;
-}
-}
-
-void noHighlight() {
-if (isHighlight) {
-((Geometry) spatial).getMaterial().setBoolean(“MixGlow”, false);
-isHighlight = false;
-}
-}
-}
-
-----
-
-
-==== Cached conditions – Rules:
-
-We use a Groovy Map cardSelectRules to save all rule in form of Closure that determine if a Card is selected or not. More about rules in the scripting part <<jme3/atomixtuts/cardsgame/scripting#,scripting>>
-
-…part of CardGamePlay.groovy
-
-[source,java]
-----
-
-public Map cardSelectRules=[:];
-void createSelectConditions(){
-// RULE : The card is in hand
-def inHandRule ={card->
-
-CardPlayer player = whichPlayerCard(card)
-if (player.getHand().contains(card)) {
-return true;
-}
-return false;
-}
-cardSelectRules["inHand"] =new ClosureSelectCondition(inHandRule);
-
-// RULE : The card is in hand of the current player – who play this device!
-def inHandCurrentRule ={card->
-if (isCurrentPlayer(whichPlayerCard(card))) {
-CardPlayer player = getCurrentPlayer();
-if (player.getHand().contains(card)) {
-return true;
-}
-}
-return false;
-}
-cardSelectRules["inHandCurrent"] =new ClosureSelectCondition(inHandCurrentRule);
-
-// RULE : The card is in hand of the current turn player – who has this turn!
-def inHandTurnRule ={card->
-if (isCurrentPlayer(whichPlayerCard(card))) {
-CardPlayer player = getCurrentPlayer();
-if (player.getHand().contains(card)) {
-return true;
-}
-}
-return false;
-}
-cardSelectRules["inHandTurn"] =new ClosureSelectCondition(inHandTurnRule);
-// RULE: The card is in ground
-def inGroundRule ={card->
-
-CardPlayer player = whichPlayerCard(card);
-if (player.ground.contains(card)) {
-return true;
-}
-return false;
-}
-cardSelectRules["inGround"] =new ClosureSelectCondition(inGroundRule);
-// RULE: Card in player Main phase
-def mainPhaseCards = {card->
-if (isCurrentPlayer(whichPlayerCard(card))) {
-CardPlayer player = getCurrentPlayer();
-if (player.hand.contains(card)||player.ground.contains(card)||player.magic.contains(card)) {
-//println(“Condition true”);
-return true;
-}
-}
-return false;
-}
-cardSelectRules["mainPhaseCards"] =new ClosureSelectCondition(mainPhaseCards);
-// RULE: Can not select any thing
-def noneSelect = {card->
-return false;
-}
-cardSelectRules["noneSelect"] =new ClosureSelectCondition(noneSelect);
-
-}
-
-----
-
-
-=== States
-
-
-==== MainMenuState
-
-
-==== InGameState
-
-
-==== LoadingState
-
-
-=== Managers
-
-
-=== Controls
-
-
-=== CardLibrary

+ 0 - 42
src/docs/asciidoc/jme3/atomixtuts/cardsgame/scripting.adoc

@@ -1,42 +0,0 @@
-= scripting
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== CardsGame: Scripting
-
-
-=== Rule
-
-In this game, Rule are implemented with groovy script
-
-
-=== EffectText
-
-In this game, Card's Effect are implemented with groovy script. You can procedure the script 2 two ways:
-
-.  parse from original EffectText ripped from the internet, via OpenNLP
-.  Write it your self with the help of the Editor
-
-
-[TIP]
-====
-For the help in OpenNLP go AdvancedTechique section
-====
-
-
-
-==== Small Card Editor
-
-I always make a small in-house editor for every of my small games (before I integrate it into the SDK for larger project with tedious tasks with standardlized-professional workflow).
-
-
-[TIP]
-====
-For the help in GroovySwing and Grifon go <<jme3/scripting#,scripting>>.
-====

+ 0 - 8
src/docs/asciidoc/jme3/atomixtuts/cardsgame/webharvest.adoc

@@ -1,8 +0,0 @@
-= webharvest
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-

+ 0 - 348
src/docs/asciidoc/jme3/atomixtuts/design.adoc

@@ -1,348 +0,0 @@
-= design
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Game Design short introduction
-
-This page is dedicated to introduce you to Game design/Planing/Managing with:
-
-basic ideas, some terms, techniques,idioms, workflows you should learn and practice in the way of game/software developing.
-
-I will keep it short but concise!
-
-
-=== Wisdoms and Insights with Images
-
-TRY: link:http://www.handdrawnapps.com/category/game-design-resources/[http://www.handdrawnapps.com/category/game-design-resources/]
-
-'''
-
-....
-Doing it right!
-....
-
-image:http://rubycowgames.com/wp-content/uploads/game-design.jpg[game-design.jpg,width="400",height=""]
-
-'''
-
-....
-The Process and elements
-....
-
-image:http://www.gamasutra.com/db_area/images/feature/3934/image002.jpg[image002.jpg,width="400",height=""]
-
-'''
-
-....
-Use UML & List & Tree and Graph
-....
-
-image:http://dundee.cs.queensu.ca/~cax/arch/game-design-3.png[game-design-3.png,width="400",height=""]
-
-image:http://indiegamesstudio.com/blog/wp-content/uploads/2012/08/articydraft_dialogjunkie_shot02_615x362.jpg[articydraft_dialogjunkie_shot02_615x362.jpg,width="400",height=""]
-
-'''
-
-....
-Line up gameplay's element for better overview first
-....
-
-image:http://fc04.deviantart.net/fs50/i/2009/287/d/c/Game_Design_Sketch_Pack_by_deadinsane.jpg[Game_Design_Sketch_Pack_by_deadinsane.jpg,width="400",height=""]
-
-'''
-
-....
-Care about player input and experience, motion and emotion,inspired by them!
-....
-
-image:http://gametea.files.wordpress.com/2010/09/game-design-101.gif[game-design-101.gif,width="400",height=""]
-
-image:http://bulk2.destructoid.com/ul/215158-GameDesignEvent.JPG[215158-GameDesignEvent.JPG,width="400",height=""]
-
-image:http://www-static.dreambox.com/wp-content/uploads/2009/06/video_gamestest.jpg[video_gamestest.jpg,width="400",height=""]
-
-'''
-
-....
-Teamwork and share, hubris is the gamekiller!
-....
-
-image:http://gamecareerguide.net/db_area/images/item_images/20071120/071120_design_game03.jpg[071120_design_game03.jpg,width="400",height=""]
-
-
-=== Website
-
-image:http://gamedesignschools.com/uploads/digital_asset/file/1161/gamedesignschoolscom-main-image_900x300.jpg[gamedesignschoolscom-main-image_900x300.jpg,width="400",height=""]
-
-link:http://gamedesignschools.com/[http://gamedesignschools.com/]
-
-link:http://www.gamasutra.com/[http://www.gamasutra.com/]
-
-
-=== Books to read
-
-Try to google them please!
-
-*  Game Architecture and Design
-*  Game Design Foundations
-*  Game Design Theory and Practice
-*  Game Development and Production
-*  Ultimate Game Design Building Game Worlds
-
-
-=== Tips
-
-If you are not a professional game designer developer, or not in a “restricted workflow, or even you are, here is some tips:
-
-
-==== Thing to keep near
-
-.  Papers &amp; Pencils
-.  Your search engine
-.  Game dev books
-.  Open sources &amp; Free softwares
-.  Good kind of musics
-
-
-==== Smart workflow
-
-
-image::http://www.creativeuncut.com/imgs/video-game-designer.jpg[video-game-designer.jpg,width="",height="",align="center"]
-
-
-
-===== As developer
-
-Read :
-link:http://en.wikipedia.org/wiki/Rapid_Application_Development[http://en.wikipedia.org/wiki/Rapid_Application_Development]
-
-try *Extreme programing*:
-link:http://en.wikipedia.org/wiki/Extreme_programming[http://en.wikipedia.org/wiki/Extreme_programming]
-
-
-===== As designer
-
-Career
-link:http://www.creativeuncut.com/how-to-be-a-video-game-designer.html[http://www.creativeuncut.com/how-to-be-a-video-game-designer.html]
-
-Principles
-link:http://www.handdrawnapps.com/2013/02/19/game-design-principles/[http://www.handdrawnapps.com/2013/02/19/game-design-principles/]
-
-
-===== As an artist
-
-See 4 phase I recommended below as my experience manage a small team:
-
-
-image::http://www.skillset.org/uploads/jpeg/asset_11049_hl.jpg[asset_11049_hl.jpg,width="",height="",align="center"]
-
-
-
-image::http://hub.leoartz.com/wp-content/uploads/2009/05/m_creative_uncut.jpg[m_creative_uncut.jpg,width="400",height="",align="center"]
-
-
-.  2D Concept
-..  Outline: sketch first, dicuss a lot about ideas, be wild
-..  Coloring: get as much of details as you can
-
-.  3D Modeling
-..  Draft: T-Pose, Simple geometry, basic lighting
-..  Detail: with clean up textures, maps, shaders, better scuplting, animation
-
-
-
-image::http://benregimbal.com/lame_example_benrc_2007.jpg[lame_example_benrc_2007.jpg,width="400",height="",align="center"]
-
-
-
-[TIP]
-====
-Be wild!
-====
-
-
-image::http://fc00.deviantart.net/fs49/f/2009/206/d/b/Attack_Force_Iphone_game_art_by_carefulconan.jpg[Attack_Force_Iphone_game_art_by_carefulconan.jpg,width="400",height="",align="center"]
-
-
-
-===== As Indie & As one man army
-
-If you never in a professinal workflow before, try to do it simplier as your only have limited man power. Most valuable advice if you’re an artist do programming: Do it like Zen :p
-
-.  Smart and active: Research first, try to call out for help if need! Opensource are the key.
-..  Flexible but manageable: Try to use SVN.
-..  Shoot with both hands: Do both assets and programming can cause a mesh, do one at a time. After finish review, get approved by yourself or the leader. Continue developing.
-..  Pirate spirit: Use place holder as much as your can. Skip concept, may use existed assets. There are plenty of free assets.
-..  Avoid premature optimization: If still concerning about design, make it work first. When doubt lelf out.
-..  +++<abbr title="What You See Is What You Get">WYSIWYG</abbr>+++ : What You See Is What You® (Get| Got| Goodat | Goingto | Goal )
-..  +++<abbr title="Keep it simple stupid">KISS</abbr>+++ : Keep It Simple Stupid! link:http://en.wikipedia.org/wiki/KISS_principle[http://en.wikipedia.org/wiki/KISS_principle]
-
-
-image::http://billeebrady.com/wp-content/uploads/2012/06/Keep-It-Simple-Stupid.jpg[Keep-It-Simple-Stupid.jpg,width="300",height="",align="center"]
-
-
-
-== Management tips
-
-
-=== Time constraints
-
-With any workflow and model your team choose, keep in mind this to get high quality artworks in short limit of time, keep phase (a duration of development) tight, as my personal experiences:
-
-.  *Concept phase* The more the better researches and ideas in short/afforable time!
-.  *Design phase* The detailed the better/look ahead solutions and architecture in rather long time.
-.  *Implementaion phase* The focus, intensive and “make it work first time.
-.  *Review phase* Reviews and test, fix , always take long time, but do it frequently or you are doomed!!!
-
-
-==== Phases and its expected result
-
-So, in the end of each phase, you want to estimate your objectives and performane successes with a simple test/checklist . Here is “common expected result:
-
-*Concept phase*  Ideas → Gameplay
-
-*Design phase*   Gameplay → Screens
-
-*Implementation phase*  Screen → States [or other paradigms] → Codes (class,config)
-
-*Review phase*  Runs → Bugs → Patches → Deployed publishabe packages, game.
-
-
-==== Design as first step!
-
-In this phase, we will design the most important things have influence to our game:
-
-*  Gameplay
-*  Screens
-
-Consider, gameplay brief texts is the initial basic “outline, and the screens are the detailed sketches of the gameplay into a “software form (that's it, a game :p).
-
-
-[TIP]
-====
-Keep in mind, at first attempt don't waste your time to other paradigms than List(Table), States (simplest form of Graph) and Tree!!
-====
-
-
-
-==== In the scale of whole project
-
-This article talking about pre-production and other durations
-
-link:http://dokgames.blogspot.com/2012/09/brick-4-whats-games-development-workflow.html[http://dokgames.blogspot.com/2012/09/brick-4-whats-games-development-workflow.html]
-
-
-== Useful terms
-
-
-=== Gameplay
-
-A list of “names or “things will be seen in our game, bricks that build up the gameplay piece by piece.
-
-
-==== As shortlist
-
-Yeah, a real text list of names, short description and notes!
-
-For examples, in a Football Manager game, as my EuroKick game <<jme3/atomixtuts/kickgame#,kickgame>>
-You can see them as things:
-
-* a Football fan see a football match in a stadium*.
-
-or
-
-*a business man see a company with finance, reports and statistics*.
-
-
-===== As Mindmapping
-
-In mind mapping, the links between the names represent various kind relationships such as “Has - “Belong to , “In category… or unknown as they just poped out of our mind.
-
-
-[TIP]
-====
-In my POV, Mind mapping is really good for game design very first attempt!
-====
-
-
-
-[TIP]
-====
-Mind map can be consider very simple and basic ideas of the game in Graph based presentation, simplest Game Design document… Go to Text2Mindmap.com link:http://www.text2mindmap.com/[http://www.text2mindmap.com/] and build one… !
-====
-
-
-
-==== Design to Programming translation
-
-Those, in turn will be implemented in programming language with a programming manner.
-
-OOP for specific, appropriate name should be transfer to a appropriate Class of Object, with properties and methods.
-
-For Component Oriented Programming (COP), names should be interpreted as Prefab with a specific set of components, and their processors.
-Read : <<jme3/entitysystem#,entitysystem>>
-
-
-== Userful tools
-
-
-=== Online Docs and Repository
-
-To writing corporate documentations
-
-
-==== Google
-
-Google doc link:http://doc.google.com[http://doc.google.com]
-Google code link:http://code.google.com[http://code.google.com]
-
-
-===== Github
-
-link:http://github.com[http://github.com]
-
-
-==== Mindmap
-
-Mind map can be consider very simple and basic ideas of the game in Graph based presentation, simplest Game Design document…
-
-Go to Text2Mindmap.com link:http://www.text2mindmap.com/[http://www.text2mindmap.com/] and build one… !
-
-
-==== Open source projects
-
-Google code link:http://code.google.com[http://code.google.com]
-Source forge link:http://sourceforge.com[http://sourceforge.com]
-
-
-==== Free software
-
-
-== Detailed Game Design Course
-
-
-=== Game design prime
-
-
-=== Story, Theme and Plot
-
-
-=== Competitive, game and fun theory
-
-
-=== Map making
-
-
-=== Emotional creature and character design
-
-
-=== Dialogue and cinematic prime
-
-
-=== Gamer's Input and exprience concern

+ 0 - 245
src/docs/asciidoc/jme3/atomixtuts/greenberet.adoc

@@ -1,245 +0,0 @@
-= greenberet
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== GreenBeret game
-
-This is the up-comming chaper from game making Series
-
-Part II: chapter 8 - GreenBeret Steath action game
-
-
-=== Introduction
-
-Steath action game
-
-Like Commandos 1,2,3
-
-WorldWar theme
-
-
-==== QuickStart
-
-Repository :
-
-Issues:
-
-Topic :
-
-
-==== Disclamed
-
-3D Models
-
-
-== Researches
-
-Improving Guard Behaviour in a Top-Down 2D Stealth Game
-
-[1]   Konami,  “Metal Gear,  Konami,  1987.
-
-[2]   Konami,  “Metal Gear  Solid 2:  Sons of Liberty,
-Konami,  2001.
-
-[3]   Guinnes World Records, “First Stealth Game  to Feature
-Collective  Artificial  Intelligence, 2008. [Online].
-
-[4]   A. J. Champandard,  “On Finite State Machines and
-Reusability, 2007.  [Online].  Available:
-link:http://aigamedev.com/open/article/fsm-reusable/[http://aigamedev.com/open/article/fsm-reusable/].
-[Accessed March 2013].
-
-[5]   A. J. Champandard,  “The Gist  of Hierarchical  FSM,
-2007.  [Online].
-
-Available:
-link:http://aigamedev.com/open/article/hfsm-gist/[http://aigamedev.com/open/article/hfsm-gist/].
-[Accessed March 2013].
-
-[6]   M. Gilgenbach and T. McIntosh, “A Flexible  AI
-System through Behavior Compositing, in AI Game
-Programming Wisdom  3, S. Rabin, Ed.,  Boston,
-Charles River  Media, 2006,  pp. 289-300.
-
-[7]   A. Khoo, “An Introduction to Behavior-Based Systems
-for Games,  in AI Game Programming Wisdom 3, S.
-Rabin,  Ed., Boston, Charles River  Media, 2006,  pp.
-351-364.
-
-[8]   A. J. Champandard,  “Understanding Behaviour Trees,
-2007.  [Online].  Available:
-link:http://aigamedev.com/open/article/bt-overview/[http://aigamedev.com/open/article/bt-overview/].
-[Accessed March 2013].
-
-[9]   B.  Knafla,  “Introduction to Behavior Trees, 2011.
-[Online].  Available:
-link:http://www.altdevblogaday.com/2011/02/24/[http://www.altdevblogaday.com/2011/02/24/] introductio
-n-to-behavior-trees/. [Accessed April 2013].
-
-[10]  A. J. Champandard,  “Planning in Games:  An Overview
-and Lessons Learned, 2013.  [Online].  Available:
-link:http://aigamedev.com/open/review/planning-in-games/[http://aigamedev.com/open/review/planning-in-games/].
-[Accessed March 2013].
-
-[11]  A. J. Champandard,  “The Power  of Sequences for
-Hierarchical  Behaviors, 2007.  [Online].  Available:
-link:http://aigamedev.com/open/article/sequence/[http://aigamedev.com/open/article/sequence/].
-[Accessed April 2013].
-
-[12]  A. J. Champandard,  “The Flexibility  of Selectors for
-Hierarchical  Logic, 2007.  [Online].  Available:
-link:http://aigamedev.com/open/article/selector/[http://aigamedev.com/open/article/selector/]. [Accessed
-April 2013].
-
-[13]  Looking  Glass Studios, “Thief:  The Dark  Project,
-Eidos Interactive, 1998.
-
-[14]  T. Leonard, “Building an AI Sensory System:
-Examining  The Design of Thief: The Dark  Project,
-2003.  [Online].  Available:
-link:http://www.gamasutra.com/view/feature/131297/buildi[http://www.gamasutra.com/view/feature/131297/buildi]
-ng_an_ai_sensory_system_.php. [Accessed March
-2013].
-
-[15]   D. Isla, “Probabilistic Target Tracking and Search
-Using Occupancy Maps, in AI Game Programming
-Wisdom 3, S. Rabin, Ed.,  Boston, Charles River  Media,
-2006,  pp. 379-387.
-
-[16]  W. v. d. Sterren, “Squad Tactics: Team  AI and
-Emergent  Maneuvers, in AI Game Programming
-Wisdom,  S. Rabin, Ed.,  Hingham,  Charles  River Media,
-2002,  pp. 233-246.
-
-[17]  D. D.  Corkill,  “Blackboard Systems, 1991.  [Online].
-Available:  link:http://gbbopen.org/papers/ai-expert.pdf[http://gbbopen.org/papers/ai-expert.pdf].
-[Accessed April 2013].
-
-[18]  Monolith Productions, “F.E.A.R,  Vivendi  Universal,
-2005.
-
-[19]  J. Orkin,  “Three States and a Plan: The A.I. of
-F.E.A.R.,  2006.  [Online].  Available:
-link:http://web.media.mit.edu/~jorkin/gdc2006_orkin_je[http://web.media.mit.edu/~jorkin/gdc2006_orkin_je] ff_f
-ear.pdf. [Accessed March 2013].
-
-[20]  GSC  Game  World, “S.T.A.L.K.E.R.:  Shadow of
-Chernobyl, THQ,  2007.
-
-[21]  Geurrilla  Games,  “Killzone  2, Sony Computer
-Entertainment  Europe, 2009.
-
-[22]  T. Verweij,  “A hierarchically-layered  multiplayer  bot
-system for a first-person shooter, August 2007.
-[Online].  Available: link:http://www.guerrilla[http://www.guerrilla]-
-games.com/presentations/VUA07_Verweij_Hiera rchica
-lly-Layered-MP-Bot_System.pdf.  [Accessed March
-2013].
-
-
-== Process
-
-
-=== Tutorial timeline
-
-This section arrange the process and parts into a timeline to suite better with a tutorial format. You can read it day by day, week by week until you complete.
-
-.  Part 0: Download and Setup
-.  Part 1: Review and design, sketch
-.  Part 2: Assets
-.  Part 3: Code the main
-.  Part 4: Code the gameplay
-.  Part 5: Physics
-.  Part 6: AI
-.  Part 7: Cinematic
-.  Part 8: Scripting
-.  Part 9: Data
-
-
-== Design
-
-
-=== MindMap
-
-
-=== States
-
-
-=== Screens
-
-
-== Programming
-
-
-=== Core
-
-
-=== Stage
-
-
-==== Cam
-
-
-=== States
-
-
-=== World
-
-
-=== Map
-
-
-==== Logic
-
-
-=== Sensor
-
-
-=== Trigger
-
-
-==== Routine
-
-
-=== Path
-
-
-=== Activities
-
-
-==== Timed
-
-
-=== Probality
-
-
-==== AI
-
-
-=== AI Sensors
-
-
-==== Line of Sight
-
-link:http://www.redblobgames.com/articles/visibility/[http://www.redblobgames.com/articles/visibility/]
-
-
-===== Hearing
-
-
-=== Visibility & LevelOfDetail
-
-
-==== Ranged
-
-
-===== Piority Ordered
-
-
-=== AI Behaviours

+ 0 - 229
src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame.adoc

@@ -1,229 +0,0 @@
-= heavenrtsgame
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== HEAVEN RTS
-[quote]
-____
- So you are ready to take a bigger challenge, I wont stop you but I have to remind you there will be a very rough road, even flood and storms ahead! In fact this tutorial is *NOT* entirely for new comer, you can learn quite techniques which are good for your first game, but to understand every parts, especially AI parts will take you weeks or months, i'm affair. Anyway, you are ready, let's go!
-____
-
-Build your sci-fi army and destroy the enemies. Play it online!
-
-*Genre*: RTS (Real-time Stragegy)
-
-*Game play*:
-
-*  Build army and empire
-*  Fight enemies (AI, human)
-*  Play it online
-*  Replay <<jme3/atomixtuts/heavenrtsgame/replay#,replay>>
-*  Fast peace | Micro style
-
-
-=== Techs use:
-
-*  JME3 and plugins
-*  Atom framework
-*  Blender, GIMP, SVN
-*  ThreeRings
-
-
-=== Technique shown
-
-Special technique will be introduced in the game and in the video tutorials:
-
-*  Entity system integrated
-*   AI Steering behavior and Decision Tree, Formation, Stregagy planning , Probality, AI Composing, Rule base, Economic
-*  Scripting
-*  Physics
-*  Advanced +++<abbr title="Graphical User Interface">GUI</abbr>+++
-*  Advanced Editor
-*  ExTerrain
-*  Advanced LOD
-*  Customable gameplay . Ex: Change to Age of Empire style.
-*  Networking [later]
-*  Database [later]
-
-
-=== Why?
-
-I want to make better Sci-fi RTS game engine.
-
-Inspired by Zero-K by SpringRTS.
-
-
-=== Quick start
-
-Source code:
-link:https://code.google.com/p/heaven-rts-jmegame/[https://code.google.com/p/heaven-rts-jmegame/]
-
-Forum link:
-link:http://hub.jmonkeyengine.org/forum/topic/game-making-tutorials-series-by-atomix-name-changed/[http://hub.jmonkeyengine.org/forum/topic/game-making-tutorials-series-by-atomix-name-changed/]
-
-Design:
-
-Issues:
-
-Plan:
-
-
-=== Idea & Story
-
-Inspired by the famous Star-craft and Zero-K!
-
-*  Build an empire
-*  Destroy your enemies
-
-Want to include best of those *BEST RTS GAMES EVER*:
-
-link:http://guyspeed.com/best-rts-games-ever/[http://guyspeed.com/best-rts-games-ever/]
-
-
-=== Screenshots
-
-Heaven – RTS Game.
-
-image::http://farm9.staticflickr.com/8041/7976138046_752c4a5b03_b.jpg[7976138046_752c4a5b03_b.jpg,width="400",height="",align="center"]
-
-
-
-== PROCESS
-
-
-== Researches
-
-
-[TIP]
-====
-So, what is the point of doing quite amount of researches before into real game developing. Ehr… RTS is a hard topic, especially, thousands of game in this genre got published, with failures and successes. If we want to go beyond “making a game like Starcraft goal, we have to do those long term researches.
-====
-
-
-RTS games are my fav game genre.. I lost thousands of hours in them and never regret :p . That's why I try to make one, at least one like Star craft broodwar.
-
-Long and Detailed research topic and links for you to read into:
-
-<<jme3/atomixtuts/heavenrtsgame/researches#,researches>>
-
-
-=== Tutorial timeline
-
-This section arrange the process and parts into a timeline to suite better with a tutorial format. You can read it day by day, week by week until you complete.
-
-.  Part 0: Download and Setup
-.  Part 1: Review and design, sketch
-.  Part 2: Assets
-.  Part 3: Code the main
-.  Part 4: Code the gameplay
-.  Part 5: Physics
-.  Part 6: AI
-.  Part 7: Cinematic
-.  Part 8: Scripting
-
-
-== Design
-
-
-[IMPORTANT]
-====
-This is “GAME DESIGN , about architecture design go to Atom framework Design docs & course<<jme3/advanced/atom_framework/design#,design>>
-====
-
-
-
-=== Plots & Concepts
-
-Detailed design document for this game (game genre), you can read or skip if you got all the concepts and term by heart. <<jme3/atomixtuts/heavenrtsgame/gameplay/detailed#,detailed>>
-
-
-=== What make us different?
-
-Art Style &amp; theme
-
-Speed aka pace
-
-Short comperation
-
-
-=== Screens & States
-
-Slide:
-
-
-== Asset making
-
-Before we get started, let's list (named and count) how many 3d models of units, landscape, effects we want to make
-Mindmap:
-
-
-=== References:
-
-Some other video tutorials for sci-fi modelling on the internet of various authors:
-
-
-=== My owns:
-
-
-==== Units:
-
-A “Quick and dirty Mech modelling process:
-
-
-==== Effects:
-
-
-== Setup
-
-
-== Programming
-
-
-=== Foremost step
-
-
-==== Atom framework
-
-
-=== Stage and States
-
-
-=== Code the Gameplay
-
-
-=== AI
-
-Cooperative Path finding:
-link:https://www.youtube.com/watch?v=hu9K3pfbklo[https://www.youtube.com/watch?v=hu9K3pfbklo]
-
-link:http://www.aronde.net/uploads/tx_pubdb/arms2013_submission_4.pdf[http://www.aronde.net/uploads/tx_pubdb/arms2013_submission_4.pdf]
-
-link:http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Publications_files/coop-path-AIIDE.pdf[http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Publications_files/coop-path-AIIDE.pdf]
-
-link:http://code.google.com/p/cooperativepathfinding2/[http://code.google.com/p/cooperativepathfinding2/]
-
-link:https://github.com/pokeb/asi-path-finder[https://github.com/pokeb/asi-path-finder]
-
-Detailed :
-<<jme3/atomixtuts/heavenrtsgame/programming/ai#,ai>>
-
-
-== Scripting
-
-
-== Entities
-
-
-== Networking
-
-
-== Expansions
-
-
-== Conclusion

+ 0 - 220
src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/gameplay/detailed.adoc

@@ -1,220 +0,0 @@
-= detailed
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== RTS gameplay
-
-
-[IMPORTANT]
-====
-To verify and unite the ideas, terms in this page I'd recommend you to read wikipedia to make sure if the term are corrected and common.
-====
-
-
-Wiki: link:http://en.wikipedia.org/wiki/Real-time_strategy[http://en.wikipedia.org/wiki/Real-time_strategy]
-
-Mindmap:
-
-Slide:
-You can view full Gameplay Design document in Googledoc ( with more images, less text)
-
-
-=== Gameplay: Core and additional elements
-
-
-[TIP]
-====
-This will be revive in design phase
-====
-
-Gameplay element will lead to requirements in AI and other components. Here we look around to review others famous game within RTS genre. The most obvious feature can have recognize a RTS game is number of units and its tech tree.
-
-
-==== Battle
-
-Battle are most obvious activities of wars and also the distinc of RTS with civilazation game genre which have slow peace and mainly in Economic. War between planets and universe races like in StarCraft or between Countries like in Age of Empires. Battle in each game have its own “style and “form, mainly cause by the theme of the game, the skills of each units, number of them and the enviroments.
-
-Also we can see this gameplay element will require AI, network system to tightly corporate.
-
-
-==== Economic
-
-Economic in RTS can be seen as “build order, “tech tree or “resource locating problem, because almost every game have economic just as secondary gameplay to support battle.
-
-
-==== Fog of war - Reconnaissance
-
-The lack of full view of the world also need to differences between RTS and board game (chess etc).. as Player don't have full awareness of opponents. Also in some games, player have to go explore or build houses to expand their map.
-
-
-==== History and agriculture
-
-Each race or country have its own history and agriculture which will affect assets and can cause different tech tree of course.
-'''
-
-
-=== RTS Core
-
-
-==== Player
-
-Every player have an Account that they can use to log in to lobby and find Game and invite other Players to join a hosted Match
-
-
-===== Match
-
-A Match have 2-8 Players who have their Team and Races. Team have Color as visual indentification. A Match have specific settings, configuration and most important a choosed Level and Type of GamePlay (Campain, FlagRush, Defeat,…)
-
-
-===== Race
-
-We have 3 Races : Human, Mech (as Protos), Bug (as Zerg). Their have different Skills, Attributes and TechTree which form different way of playing.
-
-
-===== Game
-
-A Game start with basic pieces: Players attented, a Level(Map), a GameplayType and Goal.
-
-
-===== Level (Map)
-
-A Level is a world with a map with Enviroment, Terrain, Items, specific Entities, Routines, Activities..
-
-
-===== Techtree
-
-It's a possible sequences of actions can take to revolve the game. Essentially it form a tree with hierarchy or pre-dependency.
-
-Read more
-link:http://en.wikipedia.org/wiki/Technology_tree[http://en.wikipedia.org/wiki/Technology_tree]
-'''
-
-
-=== Actions & routines
-
-
-==== Game routines
-
-In the Game, various of GameActions are taken by Players to envolve the game. Beside of that the Level also offer specific Rountines.
-
-The Map first cover with Fog of War than be revealed and expand as the Unit moving around ( common in RTS game).
-
-The main gameplay elements - most 2 things, actions you always do in an RTS game is:
-
-*  Build construction
-*  Control units to fight against opponents
-
-
-===== Build
-
-Building is built with a specific cost, after finish its provide its functions like: Procedure troops, Upgrade skill-weapon, etc…
-
-In general speaking, it provides more GameActions, then in turn expand the TechTree.
-
-
-===== Fight
-
-Fights happend when you attack your Enemies targets: Unit and Building. The results are:
-
-*  Your units get damaged , get killed or kill others.
-*  Building get damaged or destroyed.
-
-More aspects of a fight should be concern is range, type of an Attack, abilities to defend againts each Attack. About visual aspects, different skills appear as different effects.
-
-By default the fight routine are controled by the AI.
-
-
-===== Rewards
-
-Fight also resulted in points, golds… rewarded to your result/property . As in normal RTS game, like starcraft2, no more bonus if you kill several target at once. but in DotA like game genre, you got bonus if combos happen. So our reward stragegy should be flexible enough to deal with the changable gameplay.
-
-
-===== Declare Win-Lose
-
-The final conclusion of the game (gameover) is reached as one Team complete the Goal - specific by the GameType, in our game we implemented a few gameplay type as describled below:
-'''
-
-
-=== GameplayType - Objectives & Goals
-
-
-==== Defeat enemies
-
-By default, a game normally ended when a team defeat all it enemies, as they killed and destroyed all/every or almost opponents units/constructions. Or in some games, win-lose declared as the MainHouse is destroyed.
-
-
-===== FlagRush
-
-An intesting gameplay, as the motivation of the game is to capture something call a flag. Every team of players try to take control of an item, area in particular.
-
-Win-lose usually declared as one complete a routine take the flag from imdependent platform or opponents home.
-
-
-===== Campains
-
-Usually a scripted goal means a specifics special, story based goal with specific routines and items in the Map. Teams or players try to reach the goal as in intruction as fast as possible to declare win.
-
-
-===== DotA like (RPG)
-
-The rising gameplay recently ( ehr, not really :p ) …
-'''
-
-
-==== Gameobject & Entites
-
-
-===== Unit
-'''
-
-
-=== Devices & Inputs & Controls
-
-
-==== PC
-
-
-===== Mouse & Keyboards
-
-
-===== Move , build, mirco
-'''
-
-
-=== More Gameplay aspects
-
-
-==== Economy
-
-In Age of Empire (few others), when you just focus in expanding your empire without fighting and the game said that you reach a limit, where you can not expand your economic base futher. Consider this point, you will see the different between RTS game and the game genre just focus in building things in long term like civilazation and city tycoons.
-
-So the things you want to concern in our gameplay is the way to watch, aware and manage the status of economy of every players.
-
-Beside of that, the players can trade or exchange things in between team, allies. That's an interesting point of gameplay, open possiblites but also technical problems come later, so it's worth to be carefully concerned, designed.
-
-
-===== Balance
-
-What if a race have dominance, advantages that superior to others. How can we balance between the race without annoying players by too much restrictions. This point should be considered carefully, even worth researchings. I will also offer some paper in this topic but to help you get an overview, the solutions lying in flowing categories:
-
-*  Unit attributes
-**  Techtrees, aka sequences of action can be taken
-**  Speed/cost of evolving : speed/cost of each actions, speed/cost of upgrading…
-**  The Map!
-**  Specity contrainsts of each race nature/culture
-
-
-===== Cheating
-
-People always try to find way to cheat around. And if you don't take care of your AI, it can also be consider treated. The implementation such central system (server) and communication protocol should also be well designed to reduce or prevent cheating as much as possible.
-
-
-===== Modding
-
-Starcraft, Warcraft, AOE come with its editor helps modder make their map and game, which is open a whole new world of gaming as we've seen today. This can also be consider of a sub gameplay as player customize their game and publish it.

+ 0 - 56
src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/programming/ai.adoc

@@ -1,56 +0,0 @@
-= ai
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Programming RTS AI
-
-
-== AI
-
-
-=== Map defining
-
-
-=== Path finding
-
-Read:
-
-link:http://www.codeofhonor.com/blog/the-starcraft-path-finding-hack[http://www.codeofhonor.com/blog/the-starcraft-path-finding-hack]
-
-
-=== Planing | Evalutation
-
-
-=== Optimizations
-
-
-=== The zigsaws
-
-
-=== The framework
-
-
-== Approach1
-
-
-== Approach2
-
-
-== Approach3
-
-This implementation inspired by this paper : 
-link:http://eis.ucsc.edu/sites/default/files/gda_aiide2010.pdf[http://eis.ucsc.edu/sites/default/files/gda_aiide2010.pdf]
-
-involve ABL (A Behaviour language), in which use open-source Star craft's EISBot , which is the most advanced and promising in AI field and also not only tied with specificly Star-craft like gameplay.
-
-
-=== ABL (A Behaviour language)
-
-
-=== HTN (Hierchary Task Network)

+ 0 - 28
src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/replay.adoc

@@ -1,28 +0,0 @@
-= replay
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Replay (Save/Load) & Memento
-
-Read first:
-
-link:http://sourcemaking.com/design_patterns/memento[http://sourcemaking.com/design_patterns/memento]
-
-link:http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php[http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php]
-
-This implement the Memento pattern which represent a view of neccessary imformations need (also call internal state) for later decision and observasion like in AI or replay.
-
-For optimization purpose it's normally not a full view, it just save the differences compare to its previous state 
-Also note that the context (Originator) in the Memento pattern here is the GamePlay. So any info from StageLevel or Network level, even physics… is unknown! 
-
-In GamePlay level, available information is valids Input and Actions, etc..
-
-In this RTS game, GameState contains the current Map object, Units object, the Player objects, the AI object and the time since the game started, in milliseconds…
-
-This is the distinct difference between Atom's Replay version and others implementation.

+ 0 - 161
src/docs/asciidoc/jme3/atomixtuts/heavenrtsgame/researches.adoc

@@ -1,161 +0,0 @@
-= researches
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Researches
-
-So, what is the point of doing quite amount of researches before into real game developing. Ehr… RTS is a hard topic, especially, thousands of game in this genre got published, with failures and successes. If we want to go beyond “making a game like Starcraft goal, we have to do those long term researches. 
-
-This page consist researches and link I recommend you to read the get the full pictures of the game genre and the techincal challenges and difficuties ahead.
-'''
-
-
-=== Famous RTS game
-
-link:http://guyspeed.com/best-rts-games-ever/[http://guyspeed.com/best-rts-games-ever/]
-'''
-
-
-=== Terrain & Tiling
-
-link:http://world-editor-tutorials.thehelper.net/tilesets.php[http://world-editor-tutorials.thehelper.net/tilesets.php]
-
-link:http://forum.unity3d.com/threads/131862-Terrain-Tile-Editor[http://forum.unity3d.com/threads/131862-Terrain-Tile-Editor]
-
-link:http://nargaque.com/2010/05/01/the-starcraft-ii-map-editor-in-context/[http://nargaque.com/2010/05/01/the-starcraft-ii-map-editor-in-context/]
-
-link:http://www-cs-students.stanford.edu/~amitp/gameprog.html[http://www-cs-students.stanford.edu/~amitp/gameprog.html]
-
-link:http://www-cs-students.stanford.edu/~amitp/game-programming/grids/[http://www-cs-students.stanford.edu/~amitp/game-programming/grids/]
-
-link:http://archive.gamedev.net/archive/reference/programming/features/arttilebase/[http://archive.gamedev.net/archive/reference/programming/features/arttilebase/]
-
-link:http://gamearchitect.net/Articles/StreamingBestiary.html[http://gamearchitect.net/Articles/StreamingBestiary.html]
-
-link:http://geoinformatics.fsv.cvut.cz/gwiki/Modern_Algorithms_for_Real-Time_Terrain_Visualization_on_Commodity_Hardware[http://geoinformatics.fsv.cvut.cz/gwiki/Modern_Algorithms_for_Real-Time_Terrain_Visualization_on_Commodity_Hardware]
-
-link:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.7168&rep=rep1&type=pdf[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.7168&amp;rep=rep1&amp;type=pdf]
-
-link:http://www.codeproject.com/Articles/106884/Implementing-Auto-tiling-Functionality-in-a-Tile-M[http://www.codeproject.com/Articles/106884/Implementing-Auto-tiling-Functionality-in-a-Tile-M]
-
-link:http://autoloot-games.com/?p=232[http://autoloot-games.com/?p=232]
-
-
-=== A-like open source projects
-
-There are numbers of open source projects trying to intimate SC BW :
-
-Star craft 1 Bot +++<abbr title="Application Programming Interface">API</abbr>+++:
-link:http://code.google.com/p/bwapi/[http://code.google.com/p/bwapi/]
-
-link:http://code.google.com/p/bwapi/wiki/TableOfContents[http://code.google.com/p/bwapi/wiki/TableOfContents]
-
-link:http://code.google.com/p/bwapi/wiki/Academics[http://code.google.com/p/bwapi/wiki/Academics]
-
-Open source RTS
-link:https://skatgame.net/mburo/orts/orts.html#Overview[https://skatgame.net/mburo/orts/orts.html#Overview]
-Associated papers and researches from ORTS members:
-link:http://rtsairesearch.wordpress.com/[http://rtsairesearch.wordpress.com/]
-
-Yet another RTS
-link:http://sourceforge.net/projects/yarts/[http://sourceforge.net/projects/yarts/]
-
-MircoRTS
-
-… [ 5 more]
-
-I 've read their source codes for *a few times* to get the idea of making RTS game in two important fields: *AI* and Networks programming. 
-'''
-
-
-=== Gameplay: Core and additional elements
-
-
-[TIP]
-====
-This will be revive in design phase
-====
-
-Gameplay element will lead to requirements in AI and other components. Here we look around to review others famous game within RTS genre. The most obvious feature can have recognize a RTS game is number of units and its tech tree.
-
-
-==== Battle
-
-Battle are most obvious activities of wars and also the distinc of RTS with civilazation game genre which have slow peace and mainly in Economic. War between planets and universe races like in StarCraft or between Countries like in Age of Empires. Battle in each game have its own “style and “form, mainly cause by the theme of the game, the skills of each units, number of them and the enviroments. 
-
-Also we can see this gameplay element will require AI, network system to tightly corporate.
-
-
-==== Economic
-
-Economic in RTS can be seen as “build order, “tech tree or “resource locating problem, because almost every game have economic just as secondary gameplay to support battle. 
-
-
-==== Fog of war - Reconnaissance
-
-The lack of full view of the world also need to differences between RTS and board game (chess etc).. as Player don't have full awareness of opponents. Also in some games, player have to go explore or build houses to expand their map.
-
-
-==== History and agriculture
-
-Each race or country have its own history and agriculture which will affect assets and can cause different tech tree of course.
-'''
-
-
-=== AI
-
-AI in an RTS is defenitely the most advanced game AI topic. It's diffucult and contain a lot of topic:
-
-.  Path finding
-.  Invidual AI
-.  Group AI
-.  Tactical formation
-
-Techniques used are wide:
-
-.  A*, Theta*,
-.  Decision making and planing: STRIPS, HTN, Monte Calor sampling… 
-.  Behaviour language , probilities …
-.  [hundred more..]
-
-In fact these researches took me like 3 years or more, the more I've read, the more techniques shown up.
-So at last, in this example game's source code (HeavenRTS), there are entirely fews implemention which include serveral AI approaches:
-
-.  My first attemp is an old-skool approach which represent the agents with simple AI model. The country with Goal-based reasoning and the unit with HFSM.
-.  My second attemp is building a beyanis network for reasoning, in which advanced in programming techs but a lot weaker in term of a RTS bot.
-.  One more implementation inspired by this paper : link:http://eis.ucsc.edu/sites/default/files/gda_aiide2010.pdf[http://eis.ucsc.edu/sites/default/files/gda_aiide2010.pdf] involve ABL, in which use open-source Star craft's EISBot , which is the most advanced and promising in AI field but as I said tied with specificly Star-craft like gameplay.
-
-
-[NOTE]
-====
-Bottom line, it's not a brag to say this project's source code is still even interesting for a Java guy look into AI, or an AI guy look into Java, in both directions. <<jme3/advanced/atom_framework/ai#,More AI>>
-====
-
-'''
-
-
-=== RTS Network
-
-
-=== Other pieces
-
-
-==== Cheating
-
-People always try to find way to cheat around. And if you don't take care of your AI, it can also be consider treated. The implementation such central system (server) and communication protocol should also be well designed to reduce or prevent cheating as much as possible.
-
-
-==== Balancing & Economy
-
-What if a race have dominance, advantages that superior to others. How can we balance between the race without annoying players by too much restrictions. This point should be considered carefully, even worth researchings
-
-
-==== Expansions & Mods
-
-Also Starcraft, Warcraft, AOE come with its editor helps modder make their map and game, which is open a whole new world of gaming as we've seen today.

+ 0 - 366
src/docs/asciidoc/jme3/atomixtuts/kickgame.adoc

@@ -1,366 +0,0 @@
-= kickgame
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== EUROKICK 2012
-
-Game for Euro 2012.
-[quote]
-____
- You are a football (soccer) fan. ME too :p. Long time ago, I was addicted to Champion League Manager game series then find my self spend every nights and days to play it. Not to mention Pro Evolution Soccer and kick the ball in real life… Anyway, my motivation of making a clone of all my Sport games I love is simple, I want to experiments the things I learnt when I play that game, and pretend to be a player, a coach, a manager… for once in my life. So let's make it real!
-____
-
-_Watch Euro now, play the game later! :p_
-
-*Genre*: Sport
-
-*Gameplay* : Football (Soccer) Manager
-
-*Game Modes*: all single-play now
-
-*      Football Club Manager
-*      Football Match
-*      Penalty Shoot Training
-
-
-=== Techs use:
-
-*  JME3 and plugins
-*  Atom framework
-*  Blender, GIMP, SVN
-
-
-=== Technique shown
-
-Special technique will be introduced in the game and in the video tutorials:
-
-*   AI
-**  Steering behavior &amp; Formation
-**  Decision Tree
-**  Goalbase
-**  Stregagy planning
-**  Probality
-
-*   Scripting
-*   Sprite Engine
-*   Physics
-*   Cinematic
-*   Advanced +++<abbr title="Graphical User Interface">GUI</abbr>+++
-
-
-=== Why?
-
-I saw a Unity example about making sport game and It’s pretty damn good! But with JME3, we can do better !
-
-
-=== Quick start
-
-Source code: link:http://code.google.com/p/eurokick-jmegame/[http://code.google.com/p/eurokick-jmegame/]
-
-Forum link:
-
-Design: link:https://docs.google.com/document/d/1JV8wZkyhaJc_4Jqrj1RQjhK4lNmGn7YFKwbJXxPM7Kk/edit?usp=sharing[here]
-
-Issues:
-
-Plan:
-
-
-=== Idea & Story
-
-Inspired by series of the game Champion Manager and Pro Soccer!
-
-*  Be a legendary soccer player!
-*  Managing your football team in the leagues.
-*  Build your stadium, buildings.
-*  Investigate in young talents.
-*  Be a national team coach join Euro and win the champion.
-
-
-=== Screenshots
-
-Version 0.1
-
-image::http://farm8.staticflickr.com/7120/7420435866_b531225642_b.jpg[7420435866_b531225642_b.jpg,width="400",height="",align="center"]
-
-
-
-image::http://farm6.staticflickr.com/5320/7420435428_7a99ca6553_b.jpg[7420435428_7a99ca6553_b.jpg,width="400",height="",align="center"]
-
-
-
-== PROCESS
-
-
-=== Insight
-
-Because I'm (in my job) a 3D Artist, I can do the draft modelling in few days, and complete them in few weeks. Then I went down the long road of AI and doing +++<abbr title="Graphical User Interface">GUI</abbr>+++ for the game. These unbelievable numbers of tasks take me like 4-5 months because i'm also very busy at work.
-
-Thank to good papers I found, I can achive good result which can sastisfy me a little bit.
-
-
-=== Tutorial timeline
-
-This section arrange the process and parts into a timeline to suite better with a tutorial format. You can read it day by day, week by week until you complete.
-
-.  Part 0: Download and Setup
-.  Part 1: Review and design, sketch
-.  Part 2: Assets
-.  Part 3: Code the main
-.  Part 4: Code the gameplay
-.  Part 5: Physics
-.  Part 6: AI
-.  Part 7: Cinematic
-.  Part 8: Scripting
-.  Part 9: Data
-
-
-== Research
-
-As mentioned above, this game inspired by Champion League Manager , the classical (good ol-time) Ultimate Soccer Manager and Pro Soccer Evolution series…
-
-So no suprise that I want to keep good parts of thoose game in this mash-up game.
-
-Here is check list:
-
-.  First, for the game design:
-..  Researches about the football rules, as I'm not fully and carefully understand every aspect of the orginal FIFA football (soccer) game.
-..  Researches about history of football and football leagues, players, clubs, coaches … in Europe, Asia and Ameria (South and North)…
-..  Serious researches about real coach and manager job description cause this is a main part of the game. At the beginning, I've just known about it through news and stories, games.
-
-.  Programming:
-..  Soccer AI ( quite a long story …<<jme3/atomixtuts/kickgame/ai#,Read it>>)
-..  Soccer stragegy
-..  Locomotion of football player ( quite a long story …<<jme3/atomixtuts/kickgame/aa#,Read it>>)
-..  Character customizing ( quite a long story …<<jme3/atomixtuts/kickgame/cc#,Read it>>)
-..  Advanced cinematic and camera system
-
-.  Assets:
-..  As I intend to use character customizing to reduce the amount of characters I have to model, so I have to learn how to make a model that can be customized with advanced rigs and animations.
-..  The stadium and other stuffs
-
-
-After months of researching I come to a conclusion that I can do (part of) the game only by my self with my spare time, step by step, one feature at a time.
-
-
-=== Disclaimer
-
-So, there it's *no way in hell* this example game can compare to thoose commercial game. But all the metioned topics (AI, locomotion…) are implemented in simple and basic form, also extensible enough to get more mature , polished if more hands involved. :p
-
-
-== Design
-
-
-[NOTE]
-====
-You can get the whole Design Document in googledoc link:https://docs.google.com/document/d/1JV8wZkyhaJc_4Jqrj1RQjhK4lNmGn7YFKwbJXxPM7Kk/edit?usp=sharing[here] with a lot of pictures instead of text!
-====
-
-
-
-[IMPORTANT]
-====
-This is “GAME DESIGN , about architecture design go to Atom framework Design docs & course<<jme3/advanced/atom_framework/design#,design>>
-====
-
-
-
-=== First step of designing
-
-
-[TIP]
-====
-Read a short Game Design workflow introduction: <<jme3/atomixtuts/design#,design>>
-====
-
-In this phase, we will design the most important things have influence to our game:
-
-*  Gameplay
-*  Screens
-
-We did not mention concepts and idea step… but it's no need for this kind of game, because we played a lot of them and see it on TV everyday.
-
-Video:
-
-
-=== Gameplay
-
-Below is a list of “names or “things will be seen in our game, bricks that build up the gameplay piece by piece. You can see them as: * a Football fan see a football match in a stadium*. or *a business man see a company with finance, reports and statistics*.
-
-
-==== Mindmapping
-
-In mind mapping, the links between the names represent various kind relationships such as “Has - “Belong to , “In category… or unknown as they just poped out of our mind.
-
-
-[TIP]
-====
-In my POV, Mind mapping is really good for game design very first attempt!
-====
-
-
-Football image:http://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KeFVfQ204ZjE0ZGM&.png[uc?export=view&amp;id=0B1ZtpcLL_67KeFVfQ204ZjE0ZGM&amp;.png,width="200",height=""] and Bussiness image:http://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KSmFJcjFlc1U3ejg&.png[uc?export=view&amp;id=0B1ZtpcLL_67KSmFJcjFlc1U3ejg&amp;.png,width="200",height=""]
-
-If you don't want to see the full picture yet, or want to try your self. Please consider evolving the ideas from this abstraction:
-
-*  Game General (with GamePlayer, GameRoom, …)
-*  League
-**  Football League ( with Clubs…)
-**  Football Club ( with Players, Stadium, Shops..)
-**  Football Player ( with their Skill, price, career..)
-
-*  FootballMatch gameplay
-**  Football Match ( like Matches that you watch on TV )
-**  FootballPlayer Control (… or control player like ProEvolution Soccer
-
-*  Coach gameplay
-**  Football Coach ( stragegies,.. )
-**  Traning course ( train players, results)
-
-*  Manager gameplay
-**  Football player transactions
-**  Staffs management ( hire, fire some guys..)
-**  Construction ( build a big stadium of your own)
-**  Shop ( sell some thing from your club )
-**  Media ( the news, tv..)
-**  Business ( contracts, reports…)
-**  Statistics ( charts, numbers…)
-
-*  Other gameplay
-**  Character Customization
-
-
-My Full mindmap:
-
-link:http://text2mindmap.com/LHCYGk[ Mindmapping ]
-
-Those, in turn will be implemented in programming language with a programming manner. OOP for specific, appropriate name should be transfer to a appropriate Class of Object, with properties and methods. For Component Oriented Programming (COP), names should be interpreted as Prefab with a specific set of components, and their processors.
-
-
-=== Detailed
-
-Detailed
-<<jme3/atomixtuts/kickgame/gameplay/detailed#,detailed>>
-'''
-
-
-=== Screens
-
-
-[NOTE]
-====
-View full in design documentation! link:https://docs.google.com/document/d/1JV8wZkyhaJc_4Jqrj1RQjhK4lNmGn7YFKwbJXxPM7Kk/edit?usp=sharing[here]
-====
-
-
-
-==== Leage
-
-Round Matches
-
-
-===== Match Summary
-
-....
-  Score
-  Positons
-  Match Statstistics
-      Cards
-  Timeline
-  Highlights
-....
-
-
-image::http://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KNGRER0FCaDVHOGM&.png[uc?export=view&amp;id=0B1ZtpcLL_67KNGRER0FCaDVHOGM&amp;.png,width="250",height="",align="right"]
-
-
-
-==== Manager
-
-
-===== Squads
-
-PlayerInfo Detailed
-
-
-
-
-===== Manager Emails
-'''
-
-
-== Asset making
-
-Detailed step by step of this phase: <<jme3/atomixtuts/kickgame/assets#,assets>>
-
-
-=== 3D Models & Textures
-
-
-==== Player
-
-A very basic model with Run|Kick animation to test the gameplay.
-Later we will improve the quality and make it customizable.
-
-Video
-
-
-==== Stadium
-
-Video
-
-
-==== Shop
-
-Video
-
-
-==== Audiences
-
-Video
-
-
-=== UIs
-
-Video
-
-
-== Setup
-
-
-== Programming
-
-
-[TIP]
-====
-You can grabs the source code in Googlecode Git repository. The first commit is the initial source for this tutorial!
-====
-
-Generic game programing aspects:
-
-*  State
-*  Stage
-*  Gameplay
-*  World
-*  UI
-*  (specific in our football game) DB
-
-Detailed step by steps of this phase: <<jme3/atomixtuts/kickgame/programming#,programming>>
-
-
-== Scripting
-
-
-== Conclusion
-
-So after this tutorial you can survive the test and get a basic idea of making professional game, how to overcome design phase till implementations and bug fixing.
-
-The total time i used to complete all the thing seen and written here was roughly 4 months and a lot of time took for the preparing.
-
-Update: As July 2013, I decide to add some advanced animation and locomotion into this game. Check the programing part.

+ 0 - 104
src/docs/asciidoc/jme3/atomixtuts/kickgame/ai.adoc

@@ -1,104 +0,0 @@
-= ai
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Soccer AI
-
-
-[WARNING]
-====
-This is a very loooong story… 
-====
-
-Sport and Physical, Human AI are very active parts of AI nowaday. It involve a lot of subjects… That's why is also quite hard to bring into game.
-
-Two category:
-
-.  Invidual AI:
-..  Human as Agent in a Team in a sport Game.
-..  Human behaviour in a sport Game.
-...  Movement behaviour
-...  Brain
-...  Physical (tesion, …) 
-...  Balance and locomotion
-
-
-.  Group AI:
-..  Stragegy 
-..  Plan (Goal , situation base..)
-..  Some thing else…
-
-
-
-=== Initial approach
-
-As for EuroKick, my *initial approach* is the most basic form:
-
-.  State machine for invidual AI
-.  Hard code decision tree and some support techniques for group AI
-
-For futher reading about this naive approach, almost adapt from the SportAI chapter of the famous “Programming Game AI by example book, you can find it here: link:http://www.ai-junkie.com/books/toc_pgaibe.html[http://www.ai-junkie.com/books/toc_pgaibe.html]
-
-The book come with C++ source code, and fortunately someone port it to Java: link:http://www.sallyx.org/sally/en/game-ai/[http://www.sallyx.org/sally/en/game-ai/] , of source I use the source code but I port it to Groovy and change a lot in the structure to fit with out JME3 architecture, 3D, animations…etc Why Groovy? For operation overiding, scripting and such…
-
-For this approach, the invidual AI represent as a moving point and some simplest action, it normally is quite enough for a management game (and also for the tutorial) but for a football controlling game like ProEvolution soccer or Fifa it's lack a lot of supports.
-
-
-=== Next-gen approaches
-
-In my second attempt recently, I'd like to improve both invidual level and group level envolve fuzzy, emotional, goalbase and training. 
-
-Also in the process of making AtomAI, envolving more advance AI techniques like AI programming language and some “new born - “academic like POSH, Pogamut … <<jme3/advanced/atom_framework/atomai#,Read AtomAI>>, I want to make a push to this project by envolving this “new born techs.
-
-Football player in the field can consider a physical-emotional creature know how to:
-
-.  move (run,jump,balance..) 
-.  play with the ball masterfully (kick, lead, pass..) 
-.  have own personalities and charateristic.. 
-
-compare to a single steering point (in the old approach)!
-
-The players and all other characters:
- - interact, comunicate with teammates, refree, activities on the field
- - have overal stragegy, tactic, formation which can be change on the fly, train via training course .. etc..
-
-Other than that, football players, coachs - they have nagotiation skills and can chat! If you watch Soccer Manager game evolutions closely, you can find the charater get smarter and smarter every year when they negotiate about the transactions, rercuitment … They have memories, can also express their ideas, emotions, and words …
-
-That make the game much more challanging, interesting and enjoyable! Of course the underlying techs change and enable a whole new level of intelligent game agents, the same we want to see in our game!
-
-But for a game development process, at some point you have to decide how much efforts are considered enough for your game and stop there! It's a game anyway, not a freaking science simmulation. Let's named what we have:
-
-
-=== Physical - Emotional Human AI
-
-This mainly required by Match gameplay.
-Human brain and emotions is very difficult to simmulate. These are what AtomAI brings:
-
-.  Emotions ( fuzzy, memories, ..)
-.  Physical ( balance, physic aware, IK..)
-.  Talkative agent ( chatbot, memories, nature language processing …)
-.  Learnable - Trainable ( machine learning, skill improving with althelist simmulation models …)
-
-
-=== Group AI
-
-This mainly required by Coaching gameplay.
-A group of invidual agents obey, rely on some global/overal stragegy or direction, in which forming a coach in real life.
-
-Of course coaching appreared as in-match and our-match plans. Which we will consider to simmulate in different ways in our design.
-
-
-=== Data
-
-The data for this game can be huge to make some techniques work well:
-
-.  Datas of gameplay: Football players and clubs infomations (attributes, tranactions, trainings, 3d models, characteristics …) to use in gameplay, simmulate economic models.. <<jme3/atomixtuts/kickgame/data#,Read more in Data section>>
-.  Datas for AI: human physical-emotions simmulation, language recoginizing, processing, training materials…
-
-I still want to sketch a framework and open it for community driven like other opensource: Then the required data can be procedured in network, webs of computers and devs…That's my point!

+ 0 - 68
src/docs/asciidoc/jme3/atomixtuts/kickgame/assets.adoc

@@ -1,68 +0,0 @@
-= assets
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== EuroKick : Assets Making
-
-
-=== 3D Models & Textures
-
-
-==== Player
-
-A very basic model with Run|Kick animation to test the gameplay.
-Later we will improve the quality and make it customizable.
-Uniform Cloth Texture layout is the same with Pro Soccer evolution and Fifa series.
-
-In Blender
-
-image::https://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KMGxFSHo4WEdIMG8&.png[uc?export=view&amp;id=0B1ZtpcLL_67KMGxFSHo4WEdIMG8&amp;.png,width="400",height="",align="center"]
-
-
-In JMP
-
-image::https://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KQzBlRlRaSDJTa2s&.png[uc?export=view&amp;id=0B1ZtpcLL_67KQzBlRlRaSDJTa2s&amp;.png,width="400",height="",align="center"]
-
-
-Cloth Texture
-
-image::https://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KQnVId29DUjduMkk&.png[uc?export=view&amp;id=0B1ZtpcLL_67KQnVId29DUjduMkk&amp;.png,width="400",height="",align="center"]
-
-
-Video
-
-
-==== Stadium
-
-Video
-
-
-==== Shop
-
-Video
-
-
-==== Audiences
-
-At first attempt, I model the audiences in the stadium with 2D sprites. So they are flat animated billboard always face the camera. For the beginning, this method is good enough. We will change to advanced method later.
-
-image:https://drive.google.com/uc?export=view&id=0B1ZtpcLL_67KTkx4djR2Qk80OHM&.png[uc?export=view&amp;id=0B1ZtpcLL_67KTkx4djR2Qk80OHM&amp;.png,width="256",height=""]
-
-Video
-
-
-=== UIs
-
-Panel
-
-List
-
-Effects
-
-Video

+ 0 - 65
src/docs/asciidoc/jme3/atomixtuts/kickgame/cc.adoc

@@ -1,65 +0,0 @@
-= cc
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Character customization
-
-This is an interesting topic in game development and industry
-
-
-[WARNING]
-====
-This is a very loooong story… 
-====
-
-[quote]
-____
- I started my game develop career with some basic DirectX examples and pirated 3DSMax 13 years ago, when I was 13. :p Yes, I'm just 26 in 2013. Then I went to 3D Game Studio version A5 to do some fancy drag and drop stuff… From that point I've already got the idea of doing a character customization system in my mind. 
-____
-[quote]
-____
-[quote]
-____
-So, that's why this story will be quite loong, even f$#4king much more than I imagine. Bear with me
-____
-
-____
-
-
-=== Ideas
-
-The initial idea of Character customization is: We (human) are soooo *similiar*!! 
-
-The second idea: *resuable* and *composable*!
-
-.  Cloths, skins, 3dmodels, animation.. are components of a whole, which made up character
-.  The same ideas with component oriented architecture
-
-So to reduce a very big workload of data and assets need for a game with vast data of character (football players, etc…) More over we can support and encourage gamer to “build their own character! This is how we handle the situations, similiar scenario can happen in a MMOs.
-
-
-[TIP]
-====
-Read full solution in Atom framework CC page <<jme3/advanced/atom_framework/cc#,cc>>
-====
-
-
-
-=== References
-
-
-=== Video Preview
-
-
-=== Articles & Papers
-
-Forum:
-
-
-=== My JME Character customization approach

+ 0 - 196
src/docs/asciidoc/jme3/atomixtuts/kickgame/gameplay/detailed.adoc

@@ -1,196 +0,0 @@
-= detailed
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Detailed
-
-
-=== General
-
-
-==== GamePlayer
-
-....
-  Name
-  Avatar
-  Infos
-....
-
-Ex: 
-
-
-=== League
-
-
-==== Football League
-
-....
-  Country
-  Champion ship
-  History
-  List of rounds and matches
-....
-
-Ex:
-
-
-==== Football Club
-
-....
-  Name
-  Owner (GamePlayer)
-  Stadium
-  Team ( of Football Players)
-  Logo
-  Shirt
-....
-
-Ex:
-
-
-==== Football Player
-
-....
-  Name, Infos
-  Career path, history
-  SkillInfos
-  Training statistics
-....
-
-Ex:
-
-
-=== FootballMatch gameplay
-
-
-==== Football Match
-
-....
-  TwoTeams
-  Refere
-  Stadium
-  TwoCoachs
-  Time and Leage
-  Commentor
-  Result
-  Game actions (for replay)
-....
-
-
-==== FootballPlayer Control
-
-....
-  Like ProEvolution Soccer
-....
-
-
-=== Coach gameplay
-
-
-==== Football Coach
-
-....
-  Positions
-  Stragegies
-  Team start position for a Match
-  Training schedule
-....
-
-
-==== Traning course
-
-....
-  List of exercices
-  Traning Result
-....
-
-
-=== Manager gameplay
-
-
-==== Football player transactions
-
-....
-  Buy
-  Sell
-  Loan
-  Search
-....
-
-
-==== Staffs management
-
-....
-  Recruit
-  Dismiss
-....
-
-
-==== Construction
-
-....
-  Build
-  Destruct
-....
-
-
-==== Shop
-
-....
-  Products
-....
-
-
-==== Media
-
-....
-  Advertisments
-  Newspaper
-  Stadium ads
-....
-
-
-==== Business
-
-....
-  Contract
-  Emails
-  Reports
-....
-
-
-==== Statistics
-
-....
-  Review numbers
-  History
-....
-
-
-=== Other gameplay
-
-
-==== Character Customization
-
-....
-  Head
-  Body
-  Clothes design
-  
-....
-
-
-==== Construction
-
-....
-  Place building
-  Build stuffs
-....
-
-<<jme3/atomixtuts/kickgame/gameplay#,gameplay>>

+ 0 - 56
src/docs/asciidoc/jme3/atomixtuts/kickgame/programming.adoc

@@ -1,56 +0,0 @@
-= programming
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== EuroKick: Programming
-
-
-== States
-
-
-== Stage
-
-
-== World
-
-
-=== Stadium Build
-
-
-== UIs
-
-
-=== List
-
-
-== Gameplay
-
-
-=== Football
-
-
-=== Business
-
-
-=== Media
-
-
-=== AI
-
-
-=== Customizations
-
-
-== Detailed Implementations
-
-AI
-<<jme3/atomixtuts/kickgame/programming/ai#,ai>>
-
-Advanced animation &amp; Physics &amp; Locomotion
-<<jme3/atomixtuts/kickgame/programming/aa#,aa>>

+ 0 - 309
src/docs/asciidoc/jme3/atomixtuts/mmorpg.adoc

@@ -1,309 +0,0 @@
-= mmorpg
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== MMORPG Adventure
-
-
-== CODE NAME : ANCIENT MONKEY WORLD (AMW)
-
-*Hi, monkeys*
-
-After a long project, I have time to sit down a write something about MMORPG and my adventure in making one (if it’s not a forbidden word). :p
-
-
-[WARNING]
-====
-A MMORPG Project is *not easy nor appropriate* for beginner. +
-Such projects need a lot of skills, knowledge, passions and efforts to accomplish… +
-This tutorial just 've written down as the process of one no warranty attempt start by forum members : @atomix and … ()
-====
-
-
-The project will be a community project, that mean Open-source and non-profit, code name :
-*Ancient Monkey World.*
-
-image::http://digital-art-gallery.com/oid/66/1356x1600_12073_Monkey_King_2d_fantasy_character_monkey_king_picture_image_digital_art.jpg[1356x1600_12073_Monkey_King_2d_fantasy_character_monkey_king_picture_image_digital_art.jpg,width="300",height="",align="right"]
-
-
-
-=== Quick start for Developers
-
-*  Forum: link:http://hub.jmonkeyengine.org/forum/topic/mmorpg-adventure/[http://hub.jmonkeyengine.org/forum/topic/mmorpg-adventure/]
-*  Wiki: <<jme3/atomixtuts/mmorpg#,jme3:atomixtuts:mmorpg>> and link:http://code.google.com/p/ancient-monkey-world/w/list
-*  Sourcecode: link:http://code.google.com/p/ancient-monkey-world/[http://code.google.com/p/ancient-monkey-world/]
-*  Plan: <<jme3/atomixtuts/mmorpg#process,jme3:atomixtuts:mmorpg#process>>
-*  Issues: link:https://code.google.com/p/ancient-monkey-world/issues/list[https://code.google.com/p/ancient-monkey-world/issues/list]
-*  Setup:
-*  Tools: <<jme3/atomixtuts/mmorpg_tools#, Tools used>> <<jme3/atomixtuts/mmorpg/researches/toolset#,Research about toolset>>
-*  Game documents:
-*  Art &amp; Assets:
-*  License: BSD
-
-
-=== Quick start for Viewers
-
-*  <<jme3/atomixtuts/mmorpg/phase0#detail, Phase 0 - JME 3D in 2D RPG gameplay>>
-*  <<jme3/atomixtuts/mmorpg/phase1#detail, Phase 1 - Physics and network: faster than the bullet>>
-*  <<jme3/atomixtuts/mmorpg/phase2#detail, Phase 2 - Quests and Tools>>
-*  <<jme3/atomixtuts/mmorpg/phase3#detail, Phase 3 - Deploy to the Cloud and PLAY>>
-
-
-=== Prelude
-
-I cant count how many times people saying that you can not build a MMORPG with just two hands and a computer… That mean no chance a one man army can even write that kind of game, or it going to be a failure. I’m not a fearless programmer nor a naive kid try to impress. I just think I can!
-
-I was from a Database center solution then come to Game industry in a strangest kind of accident :p As I was a pure Java programmer than become a fulltime designer. That’s kind of weird but teach me one thing “You can do extraordinary thing with the right tool”… not mentioned efford, time, knowledge, exprerience and passion…
-
-The right tools *weapon* I choose is JMonkeyEngine and other opensources project to start to learn.
-
-So did I tell you we can make a MMORPG with just an idea and a few thousand hours of working? Indeed. Here is the story:
-
-
-==== 0) Your idea:
-
-Let’s say you have a good idea of a Game… an imagination world that people interact and fight, meet, share… you have a story to tell, and want to draw some impressive scenery or beatiful characters. Spend like a few years for the ideas, may be research and play a lot of games, use papers, talk with friends, travel around the world… Until you have concentrade enough for only one good idea.
-
-
-==== 1) Your skills:
-
-Question: I can draw, can compose music, video, can code, can sing, can write script, can do Java stuff… Is that enough?
-Answer: Ummh, NO!
-MMORPG is a freaking black-hole of knowledges and experiences requirement. No estimatable amount of knowledge consider enough.
-But then I tell you is ENOUGH. At least you can do Java stuff and can draw, you can. The other you will learn when you are on the journey.
-
-*  + Programming: For the start, you need to “know” Java, the more the better. If you just write your first “Hello world” program 3 months ago. You are too hurry for a big challenge. Let make it at least 3 year exprience. I have 13 and consider people with much more expriences still facing problems of course. The years does not matter!
-*  + Assets: May be you should know how to draw and 3d stuff, the more the better. I recommend if you are at least 1 year with 3D modelling and animating, and should play around with tools. First is Concept. Then other things come quick : Sound, Sprite,…
-*  + Researching skill: This is very important if you are a one man army or indie team. You have to do research, brain-storming or ask people every time. So try to be active to get knowledge.
-
-
-==== 2) Your workflow:
-
-try Extreme programing: link:http://en.wikipedia.org/wiki/Extreme_programming[http://en.wikipedia.org/wiki/Extreme_programming]
-
-If you never in a professinal workflow before, try to do it simplier as your only have limited man power. Most valuable advice if you’re an artist do programming: Do it like Zen :p
-
-*  - Smart and active: Research first, try to call out for help if need! Opensource are the key.
-*  - Flexible but manageable: Try to use SVN.
-*  - Shoot with both hands: Do both assets and programming can cause a mesh, do one at a time. After finish review, get approved by yourself or the leader. Continue developing.
-*  - Pirate spirit: Use place holder as much as your can. Skip concept, may use existed assets. There are plenty of free assets.
-*  - Avoid premature optimization: If still concerning about design, make it work first.
-*  … [more to come]
-
-
-==== 3) Your tools:
-
-Of course this is big task, Your tools are various from DDC to Image/sound editor… But let’s name a few with zero cost! (mean open-source or free)
-
-*  - JME SDK and its plugins (Programming, database tools… a God-like tool for smart monkey)
-*  - GIMP (2d: concept, texture…)
-*  - Blender (3d)… and there are a lot of good 3d tools. Blender are the best integrated tool to JME
-*  - [Other assets tool like sound editors, sprite… come later]
-
-
-==== 4) Your framework:
-
-This is the most important thing that can make your dream possible. So let me speak a bit slowly:
-I spend years for researching in this area (MMORPG), I came across WorldForge, Darkstar,… write my own Network engine and related DB stuff using Hypertable, ORM… (bad mislead time)
-
-[TIP]
-====
-More about MMORPG Architecture and framework Researches: <<jme3/atomixtuts/mmorpg/researches#,researches>>
-====
-
-And finally I found a nice, free but powerful framework: The Threerings project link:http://www.threerings.net/code/[http://www.threerings.net/code/] 2 year ago.
-
-It taken time to research and admit that they do it nicely and scalable (i’m not going to blow it up). If you think you are better than me in reviewing go ahead, i also need valuabe comperations of framework at the moment.
-
-So what I tell you that amount of tool are pretty enough for thousand players game. I’m not going to do Three rings advertisment, for short, it’s your chance to build a MMORPG.
-
-What you will see at first that the OOO even support 3D stuff, as some of their developer also contribute in JME version2, then write their own engine. It’s quite bad compare to JME at the moment. So maybe you want to use JME3 to do graphics stuff and other tools for Network. Deploying and DB. AI stuff are often quite difficult to write your own but in the end, I will offer you a choice.
-
-
-[IMPORTANT]
-====
-But is it real you can make a MMORPG game with just that?
-Of course not. It will take more than thousands of hours to code and to draw, do experiments, fix bugs… This is just advice point out a good way before start your own journey.
-====
-
-
-People may come up with different levels of knowledge and experience. So here and there, they may want to replace an open-source project by their own library. I also write almost every modules of the architure, but for myself I can not provide enough efforts for an opensource project maintaining. I just can keep bad code, release a few good one and write down articles.
-
-For people who are exciting of community project as MMORPG, may be this time you can gather up. I’m not guaranty that I’m enough of abitily to make it to the end, but at least we have a working base to start with.
-
-
-[IMPORTANT]
-====
-
-Anyone interest can PM me as @atomix in the forum?
-====
-
-
-
-== THE ADVENTURE BEGIN
-
-
-=== The idea
-
-In Oriental culture, we all love the legend of Monkey king who traveled to the West and become a Buddha.
-
-link:http://en.wikipedia.org/wiki/Sun_Wukong[http://en.wikipedia.org/wiki/Sun_Wukong]
-
-link:https://www.google.com/search?q=Monkey+King[https://www.google.com/search?q=Monkey+King]
-
-( Songoku in Japanese )
-
-I compose the idea with wild jungle scenes in fictional oriental - western mixed scenery and theme, and adventures along the jouney.
-
-image::http://fc09.deviantart.net/fs70/i/2011/004/d/5/monkey_king_by_saryth-d36e92m.jpg[monkey_king_by_saryth-d36e92m.jpg,width="400",height="",align="center"]
-
-
-[TIP]
-====
-More about ideas and Game Design [googlecode] and [googledocs] <<jme3/atomixtuts/mmorpg#,mmorpg>>
-====
-
-
-
-=== Mind map
-
-This is the sketch mindmap of the game.
-
-iframe::http://text2mindmap.com/JdE5xP[width="100%", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-
-=== Game design
-
-
-=== MMO Game Architecture Researches
-
-
-==== Overal MMO Game Architecture
-
-In Phase 0 of the development process I intend to use Marauroa and some code from Arriane because the ease of use and clear design!
-In *Marauroa* engine they have an excellent short and precise overview MMO game architecture which I will cite below, keep in my the detail implementation like DB or even programming language are optional:
-
-_Marauroa is based on very simple principles:_
-
-*  Clients communicate with the server, and vice-versa, using a TCP portable network protocol with reliability in mind to allow a stabler experience when online game lag occurs.
-*  To play a game every player needs an account on the server that is identified by an username and a password.
-*  Players use their account to login into the server and then choose a 'player' stored under their account to play with. The server then checks the login information using the MySQL backend and loads the player into the game using the persistence engine.
-*  Players send actions to the server. The action system is totally open and has nothing hard-coded so you can edit it totally to your game style. The server sends at regular intervals, called turns, a perception to each player to inform them about the state of the game and any relevant state modifications. Marauroa's perception system is based on the Delta^2 ideology: simply send what has changed.
-*  The server executes some code each turn in order to move the game status on. Using this hook it is simple to code triggers, timeouts, conditions and whatever kind of behavior you need.
-*  The server transparently and automatically stores players and game status modifications on the persistence engine, and also information decided by the game developer using their game definition scripts.
-*  Game rules can be coded in Java to allow simple and rapid development and without having to know anything about Marauroa's internals. Python scripts for the game rules could be supported with a little work.
-*  The server generates statistics of usage which are stored in a MySQL or H2 database (so you can later generate fancy statistics from them). Or in case you don't require them, they can be disabled to save CPU cycles and disk space. Marauroa features a modular structure that means modules can be changed and disabled without affecting the operation of other modules.
-*  Both the server and clients are fully and wisely documented, with documentation about specification and design and not just +++<abbr title="Application Programming Interface">API</abbr>+++ documentation.
-
-Review the full description here
-
-[TIP]
-====
-link:http://arianne.sourceforge.net/engine/marauroa.html[http://arianne.sourceforge.net/engine/marauroa.html]
-====
-
-
-As said, the architecture and the components of a MMORPG game will be kept but part by part will be swaped or replaced as the process go. Why? Because there are better solutions new technologies nowaday. Now let take a look at the three things call the “Triangle of Bedmudas in game design.
-
-
-==== Entity system
-
-Yeah, this is not really new. In fact, the Entity system wave was from 2006-2007, as
-link:http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/[http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/]
-and almost become a standard solution in MMO world.
-
-The idea of Entity System are descripted better with details here:
-<<jme3/contributions/entitysystem/introduction#, Entity system Introduction>>
-
-So, as you see, JME community already offer 2-3 Entity System solutions. As the guys discuss in the forum, the code base of the ES should be kept rather small and compact because it's going to be involve in every game cycle. The first thing should be revolved and change from Marauroa code base is the Entity System intergration which also with be the base of other additons in the future.
-
-
-==== Event system
-
-What's the hurry for a game event system?
-Yeah, event system here is not just the event (message) broadcasting. Because game technologies involve more and more parallelism, especially to be corporate with networking, the event system should also be considered again.
-
-Event system should encourage decoupeling and give the developer more strength and controls. Also ease of use, ightweight, non blocking, non replicating…etc
-
-I'm not going to the details here but you can read more about it in the researches.
-
-
-==== Network system
-
-This problem can be considered a challange in design. No one can say it easy or they not write it and test it yet. C
-
-orporate with entity, event and networking make a “Death point for every design. For big MMO game (and other kind of massive real time system) in 4-5 years ago, they strugge to make those 3 work together, by trying to reduce the network cost, multi thread the server, and do C++ tricks in memory, pointer…etc . Yeah, we will have to do them same to be optimized …
-
-
-[TIP]
-====
-For further reading: GOTO <<jme3/atomixtuts/mmorpg/researches#,researches>>
-====
-
-
-
-==== The chosen one
-[quote]
-____
-But can we come up with better overal design first?+Hopefully, yes, this time!
-____
-
-So the asynchronized server, network and event system are widely use nowadays. The are dozen of open source project intended to solve the enterprise problems at once.
-
-....
- Node.js is a good example, the idea is simple but the implementation are truely epic. They've done it beautifully and we (java devs) should have the same thing or get used to it in the mean time.
- The runner up but in the Java world is the Three rings projects, well done and save developer from the hard parts.
-....
-
-But till the time of writing, almost no one get it straight into game developing or not into 3D (like Three rings). I considered those general systems can not sastify the needs for *enterprise game developing*! They always try to keep it relatively small because of affair / obsesses it will become un-optimized. But also because of that, they don't solve the 3 main problems at once, which lead to the un sastification i mentioned.
-
-In the researches you will find an article tell extractly how I use, modify, leverage and optimize Three rings and the existed opensource projects to let them work seamlessly together, without worry about the over engineering!
-
-
-=== AMW Architecture
-
-
-== PROCESS
-
-
-=== Phase Zero
-
-*Start:* July 1st - August 1st
-
-*Main task:* Setup and Port  MORPG engine Arriane from 2D to 3D. Try and review.
-
-<<jme3/atomixtuts/mmorpg/phase0#,phase0>>
-
-
-=== Phase 1
-
-*Start:* August 1st - September 1st
-
-*Main task:* Unknown
-
-<<jme3/atomixtuts/mmorpg/phase1#,phase1>>
-
-
-=== Phase 2
-
-*Start:* September 1st - Oct 1st
-
-*Main task:* Unknown
-
-<<jme3/atomixtuts/mmorpg/phase2#,phase2>>
-
-
-=== Phase 3
-
-*Start:* Oct 1st - Nov 1st
-
-*Main task:* Unknown
-
-<<jme3/atomixtuts/mmorpg/phase3#,phase3>>

+ 0 - 34
src/docs/asciidoc/jme3/atomixtuts/mmorpg/articlelinks.adoc

@@ -1,34 +0,0 @@
-= articlelinks
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-AI
-
-Advanced Motion
-
-Cinematic System
-
-Database
-
-Event system
-
-GameDesign
-
-Game Career
-
-Geometric
-
-Graphs
-
-Networking
-
-Multiplayer
-
-Physics
-
-Rendering

+ 0 - 266
src/docs/asciidoc/jme3/atomixtuts/mmorpg/phase0.adoc

@@ -1,266 +0,0 @@
-= phase0
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Phase 0
-
-*Start:* July 1st - August 1st
-*Tasks:*
-
-.  Search for free and open assets
-.  Setup MORPG engine Arriane
-..  Port from 2D to 3D
-
-.  Try and review.
-
-*Features:*
-*Bugs:*
-
-Google code Issues tracker:
-
-
-== Detail
-
-
-=== Arianne
-
-
-image::http://stendhalgame.org/wiki/images/3/34/Stendhal_0_65_fuzzy.png[Stendhal_0_65_fuzzy.png,width="",height="",align="center"]
-
-Another framework which is much small scale than Three rings is Arianne.
-link:http://sourceforge.net/projects/arianne/[http://sourceforge.net/projects/arianne/]
-
-In the phase Zero, I decided to use Arianne instead of Three rings. Why?
-
-As I'm working in a game company, I've learnt by heart the importance of Game Design document and Workflow. And I also have fews failure attempts in the past as hobbist game developer with small team try to make BIG thing due to lack of these.
-
-
-==== So Why Arianne?
-
-Because it's Open source, simple, have enough features, easy to deploy, test, and most important very well documented compare to Three rings.
-
-
-==== Features
-
-*
-*      Stendhal - MORPG featuring hundreds of NPCs and quests
-*      Stendhal - Huge and beautiful world to explore
-*      Stendhal - Statistics website and Hall of Fame
-*      Marauroa - Game server handling client-server communication
-*      Marauroa - Database persistence with asychronous access
-*      Marauroa - Flexibility of game rules. Apply to drawing boards, card games, PacMan …
-*      Keep It Simple approach
-*      Release early, release often
-*      Automatic client updates
-*      Detailed tutorials to extend Stendhal or get started with Marauroa
-*      Supportive development team in +++<abbr title="Internet Relay Chat">IRC</abbr>+++
-
-It's wiki with a lot of tutorials of making Quest and NPC, scripting:
-link:http://stendhalgame.org/wiki/[http://stendhalgame.org/wiki/]
-
-
-=== Marauroa and Stendhal base architecture
-
-link:https://stendhalgame.org/wiki/Marauroa_Core_API[https://stendhalgame.org/wiki/Marauroa_Core_API]
-
-link:https://stendhalgame.org/wiki/RolePlayingDesign[https://stendhalgame.org/wiki/RolePlayingDesign]
-
-link:https://stendhalgame.org/wiki/NetworkDesign[https://stendhalgame.org/wiki/NetworkDesign]
-
-link:https://stendhalgame.org/wiki/HowToWriteAdventureGamesUsingArianne#Multiplayer_fun[https://stendhalgame.org/wiki/HowToWriteAdventureGamesUsingArianne#Multiplayer_fun]
-
-
-[IMPORTANT]
-====
-Copy from Stendhal wiki
-====
-
-
-
-==== Main entities
-
-The main entities you should know about are:
-
-*  Attributes
-*  RPAction
-*  RPObject
-*  RPSlot
-*  RPClass
-*  IRPZone interface
-*  IRPRuleProcessor interface
-*  RPWorld
-
-
-==== Role Playing Design
-
-is the determining factor on how easy is to create a new game for Arianne. We had to choose easing the creation of turn time limited based games. Arianne will work better with this kind of games (also known as realtime games).
-
- Role Playing Design tries to be generic and game agnostic (independant of the game being made). The very basic idea behind RPManager is:
-
-....
-forever
-  {
-  Execute Actions
-  Send Perceptions
-  Wait for next turn
-  }
-....
-
-To achieve this we use several classes:
-
-*RPManager* is coded in Marauroa and doesn't need to be modified.
-
-*IRPRuleProcessor* is the interface that you need to modify in order to personalize the actions that your game will execute.
-
-*RPWorld* is the class that you need to extend inorder to implement the onInit and onFinish methods which personalize what happens when you initialise the server and what happens when you close the server.
-
-*IRPZone* is an interface that you could implement if you wanted to achive the highest personalization possible of the engine, however, I would use MarauroaRPZone instead as that uses our great *Delta2* feature.
-
-
-==== Actions
-
-To express the willingness of a client to do something it must send the server a MessageC2SAction message.
-
-An action is composed of several attributes. (an attribute is similar to a variable in that it has a name and contains a value).
-
-There are optional and mandatory attributes. If a mandatory attribute is not found, the message is skipped by the RPServerManager.
-
-Mandatory Action Attributes are action_id and type.
-
-The action_id is used to identify the action when a resulting response comes in a perception
-
-
-==== Perceptions
-
-The basic structure for sending world updates to clients is called perceptions.
-
-There are two types of perception:
-
-....
-  Sync perceptions: these are used to synchronize clients with the server world representation. This is the only valid way of knowing world's status.
-  Delta perception: this is used to send only the changes to the world since the last perception.
-....
-
-Our actual Perception system is called Delta2. It is heavily attached to the Marauroa core, so I recommend you to use it :)
-How Perceptions and Actions work
-
-Actions are sent from the client to the server in order to make the character perform an action. In order for the client to know the result of the action the Server needs to send a reply to the client. How will this be done?
-
-In a first attempt, we send clients back an action that was the result of their action. However, this made the code really hard because we had to update two different things, perceptions and actions. Instead the solution appears intuitively: Why not join action reply and perceptions.
-
-So the action reply is stored inside each object (that executed the action ) with a set of attributes that determine the action return status and the attributes. This way of doing replies makes it a bit harder on RPManager but it simplifies the creation of new clients a lot.
-
-See Actions reply in the Objects documentation to know exactly what is returned. However, keep in mind that the return result depends of each particular game.
-Delta2 perception Algorithm
-
-The idea behind the DPA is to avoid sending ALL the objects to a client each time, but only those that have been modified.
-
-Imagine that we have 1000 objects, and only O1 and O505 are active objects that are modified each turn.
-
-The Traditional method:
-
-*  - Get objects that our player should see ( 1000 objects )
-*  - Send them to player ( 1000 objects )
-*  - Next turn
-*  - Get objects that our player should see ( 1000 objects )
-*  - Send them to player
-*  - Next turn
-
-…
-
-I hope you see the problem… we are sending objects that haven't changed each turn.
-
-The delta perception algorithm:
-
-*  Get objects that our player should see ( 1000 objects )
-*  Reduce the list to the modified ones ( 1000 objects )
-*  Store also the objects that are not longer visible ( 0 objects )
-*  Send them to player ( 1000 objects )
-*  Next turn
-*  Get objects that our player should see ( 1000 objects )
-*  Reduce the list to the modified ones ( 2 objects )
-*  Store also the objects that are not longer visible ( 0 objects )
-*  Send them to player ( 2 objects )
-*  Next turn
-*  …
-
-The next step of the delta perception algorithm is pretty clear: delta2 The idea is to send only what changes of the objects that changed. This way we save even more bandwidth, making perceptions around 20% of the original delta perception size.
-
-The delta2 algorithm is based on four containers:
-
-*      List of added objects
-*      List of modified added attributes of objects
-*      List of modified deleted attributes of objects
-*      List of deleted objects
-
-
-=== Plan
-
-My initial plan for the phase Zero is to create a port to 3d version of the existed game Stendhal with free 3d models and 3d gameplay. Then I let the team go in, try and discuss, learn, design as much as possible before we going futher.
-
-
-==== Assets
-
-In the first attempt, 3d enviroment and models will use open art website such as:
-Blendswap link:http://blendswap.com[http://blendswap.com]
-OpengameArt link:http://opengameart.com[http://opengameart.com]
-
-and other resources to quick made up a workable game (client and server) to test and enjoy.
-
-
-==== From Arianne to jME3
-
-The reusable:
-
-*      Network: Good for small scale game
-*      DB: MySQL or integrated H2
-*      Almost gameplay: Enities definition, Quest, Scripting
-*      They also have a complete website for the game with tutorials, wiki
-
-The different between a 2d and 3d, Arianne an jME3 engine:
-
-*
-*      Replace the Arianne game loop with jME3 states and update loop.
-*      Delete the Render task of the game view JPanel
-*      Terrain : I have my own tiled Terrain implement in jME3 for almost top-down game.
-*      Characters: Use 3D Models of Open Art resource
-*      +++<abbr title="Graphical User Interface">GUI</abbr>+++ : Use pure swing gui (port to Nifty later)
-*      2d to 3d Gameplay: Map entities, trigger
-*      2d to 3d Picking : I use a simple translation
-
-
-== Concepts
-
-Pictures
-
-Videos
-
-
-== Assets
-
-
-=== 3D
-
-
-=== Textures
-
-
-=== Animations
-
-
-== Programming
-
-
-== Use of tools
-
-
-=== Something to try
-
-
-==== CityGen dungeon maker

+ 0 - 58
src/docs/asciidoc/jme3/atomixtuts/mmorpg/phase1.adoc

@@ -1,58 +0,0 @@
-= phase1
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== PHASE 1
-
-*HI, WELCOME AGAIN !*
-
-Glad that we made it through a month already. In fact I don't have much time to work on this project but it's still under control. 
-
-Most important, we've had the base working with a three layers architecture of Server Client and Common which are know minimum amount of each other, beside of achieved other design goals… It's also good enough to be a Proof of concept at this point.. In conclusion, what we achieved in Phase Zero is a stable software design, gameplay and some WIP assets, and last but not least the Taste of an MMO. :p Nice!
-
-Now we're going to move to the Phase 1. 
-
-*Duration:* August 1st - Oct 1st . 2013
-
-*Tasks:*
-
-*Features:*
-
-*Bugs:*
-
-
-== Detail
-
-
-== Concepts
-
-Pictures
-
-Videos
-
-
-== Assets
-
-
-=== 3D
-
-
-=== Textures
-
-
-=== Animations
-
-
-== Programming
-
-
-== Use of tools
-
-
-=== Something to try

+ 0 - 147
src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches.adoc

@@ -1,147 +0,0 @@
-= researches
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Frameworks
-
-Can be valuable in other field than MMO.
-
-That said the contents here are not just about *Game developing* but also can be *Large-scale simulation* which can required *Distributed computing* model.
-
-
-[TIP]
-====
-Collections of revelant articles and papers. 
-GOTO <<jme3/atomixtuts/mmorpg/articlelinks#,articleLinks>>
-
-
-====
-
-
-
-=== Event/ Network/ Protocol Frameworks
-
-
-==== Mina
-
-
-==== Netty
-
-
-==== ZeroMQ
-
-
-==== FidMQ
-
-
-==== KryoNet
-
-
-==== Thrif
-
-
-==== Protocol Buffers
-
-More Goto <<jme3/atomixtuts/mmorpg/researches/network/probuf#,probuf>>
-
-
-==== ICE
-
-The Internet Communications Engine (Ice) is a modern object-oriented toolkit that enables you to build distributed applications with minimal effort. Ice allows you to focus your efforts on your application logic, and it takes care of all interactions with low-level network programming interfaces. With Ice, there is no need to worry about details such as opening network connections, serializing and deserializing data for network transmission, or retrying failed connection attempts (to name but a few of dozens of such low-level details). 
-
-More Goto <<jme3/atomixtuts/mmorpg/researches/network/ice#,ice>>
-
-
-=== Database Frameworks
-
-
-==== ORM
-
-
-===== Apache Cayenne
-
-
-===== Hibernate
-
-
-==== NoSQL
-
-
-===== Neo4J
-
-GOTO [jme3:atomixtuts:mmorpg:neo4j]
-
-
-=== Distributed Computing Frameworks
-
-In the order of scale and related to gaming from author's POV
-
-
-==== Hadoop and folks
-
-
-==== Storm
-
-
-==== Akka
-
-
-==== Frameworks Comperations
-
-Some articles focus in comparation of Distributed Computing frameworks
-
-
-===== Storm VS Akka
-
-link:http://www.warski.org/blog/2013/06/akka-vs-storm/[http://www.warski.org/blog/2013/06/akka-vs-storm/]
-
-<<jme3/atomixtuts/mmorpg/scala#,scala>>
-
-==Storm VS Hadoop =
-
-
-=== Distributed Software/Deploying Frameworks (Cloud)
-
-In the order of scale and related to gaming from author's POV
-
-
-==== GoogleAppEngine
-
-
-=== Benchmarking test
-
-
-=== Full scale MMORPG frameworks
-
-
-==== ThreeRings - OOO Core Libraries
-
-*  Narya, Nenya, Vilya, and Clyde: a collection of Java tools and frameworks useful for making games, 2D and 3D, networked and otherwise.
-*  Getdown: a system for deploying Java-based applications and updating them over the network following installation.
-*  Depot: a declarative Java object-relational mapping library that uses EJB3 annotations but is not managed like Hibernate and friends.
-*  GWT Utils: a collection of utility and user interface routines that make developing games and applications in GWT more pleasant.
-*  Honeybird: a library that makes interacting with the Google Analytics +++<abbr title="Application Programming Interface">API</abbr>+++ more pleasant.
-*  
-
-
-=== Evaluation
-
-
-== Toolset
-
-Read the full article in researches about the open-source and commercial tool for MMORPG we have currently (well, the most popular) 
-
-[TIP]
-====
-
-Article about Toolset for MMORPG 
-GOTO <<jme3/atomixtuts/mmorpg/tooset#,tooset>>
-
-====
-

+ 0 - 13
src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/network/ice.adoc

@@ -1,13 +0,0 @@
-= ice
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../../
-:imagesdir: ../../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== The Internet Communications Engine (Ice)
-
-The Internet Communications Engine (Ice) is a modern object-oriented toolkit that enables you to build distributed applications with minimal effort. Ice allows you to focus your efforts on your application logic, and it takes care of all interactions with low-level network programming interfaces. With Ice, there is no need to worry about details such as opening network connections, serializing and deserializing data for network transmission, or retrying failed connection attempts (to name but a few of dozens of such low-level details). 

+ 0 - 52
src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/network/probuf.adoc

@@ -1,52 +0,0 @@
-= probuf
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../../
-:imagesdir: ../../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Protocol buffer from Google
-
-
-=== Idea
-
-Using Protocol buffer for network transporting is an interesting idea.
-It's almost considered an optimization in the Transport layer, due to its lightweight in term of data compression and decoding compared to XML and others…
-
-An interesting quote from Diablo3 team said that they used Protocol buffer for networking:
-
-link:http://diablo3dev.com/w/Networking[http://diablo3dev.com/w/Networking]
-
-One Question ask for Game development in general
-
-link:https://groups.google.com/forum/#!topic/protobuf/wrUU9QVUyRA[https://groups.google.com/forum/#!topic/protobuf/wrUU9QVUyRA]
-
-
-=== Wiki
-
-
-=== Projects
-
-
-=== Questions
-
-
-==== Stack Over Flow topics:
-
-link:http://stackoverflow.com/questions/tagged/protocol-buffers?sort=votes[http://stackoverflow.com/questions/tagged/protocol-buffers?sort=votes]
-
-link:http://stackoverflow.com/questions/475794/how-fast-or-lightweight-is-protocol-buffer[http://stackoverflow.com/questions/475794/how-fast-or-lightweight-is-protocol-buffer]
-
-
-===== Comparation:
-
-link:http://stackoverflow.com/questions/69316/biggest-differences-of-thrift-vs-protocol-buffers[http://stackoverflow.com/questions/69316/biggest-differences-of-thrift-vs-protocol-buffers]
-
-link:http://stackoverflow.com/questions/2000933/protocol-buffers-versus-json-or-bson[http://stackoverflow.com/questions/2000933/protocol-buffers-versus-json-or-bson]
-
-link:http://stackoverflow.com/questions/4633611/what-are-the-key-differences-between-apache-thrift-google-protocol-buffers-mes[http://stackoverflow.com/questions/4633611/what-are-the-key-differences-between-apache-thrift-google-protocol-buffers-mes]
-
-link:http://stackoverflow.com/questions/4293385/thrift-vs-protocol-buffers[http://stackoverflow.com/questions/4293385/thrift-vs-protocol-buffers]

+ 0 - 36
src/docs/asciidoc/jme3/atomixtuts/mmorpg/researches/toolset.adoc

@@ -1,36 +0,0 @@
-= toolset
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== MMORPG Toolset
-
-This is an research about the open-source and commercial tool for MMORPG we have currently (well, the most popular) 
-
-
-== Architecture
-
-
-=== Ideas
-
-This is a short list of components, features should be included in desired  MMORPG toolset
-
-
-=== Components
-
-
-=== Researches & Papers
-
-
-== Opensource
-
-
-== Commercial
-
-
-== Atom framework

+ 0 - 120
src/docs/asciidoc/jme3/atomixtuts/mmorpg/tools.adoc

@@ -1,120 +0,0 @@
-= tools
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== THE TOOLS
-
-The most amazing part of this MMORPG journey is: we have a lot of Editors for every aspect of the game. 
-
-
-[NOTE]
-====
-I came from UDK and then Unity so I borrows a lot of their editors ideas.
-====
-
-
-They are not 100% complete, but will soon be in Beta status in August, as I bring the tools to the National Software Contest of my country, Vietnam. They’re almost workable but I want to integrate them as plugins of JME SDK, so they need further development, here are their status:
-
-
-=== Addition to SDK
-
-
-==== Extra plugins to the SDK core
-
-*  - New Project type, support DB, Entity data, and Web-scale in first place.
-*  - New +++<abbr title="Graphical User Interface">GUI</abbr>+++ editor
-*  - New Visual Library with Drag and drop
-
-
-=== Brand new (specific) tools
-
-
-==== A -World editor
-
-*  - Entity editor 70% : Like in Unity link:http://docs.unity3d.com/Documentation/Manual/Inspector.html[http://docs.unity3d.com/Documentation/Manual/Inspector.html]
-*  - Trigger editor 70% : Like in Warcraft link:http://world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=118648[http://world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=118648]
-
-
-==== B – Gameplay, Animation, Character
-
-*  - Character editor 70% : link:http://sourceforge.net/projects/ed-char-editor/[http://sourceforge.net/projects/ed-char-editor/]
-*  - Dialogue editor 40% : Like ChatMapper link:http://www.chat-mapper.com/[http://www.chat-mapper.com/]
-*  - Cinematic editor 40% : Like in UDK link:http://www.unrealengine.com/features/cinematics/[http://www.unrealengine.com/features/cinematics/]
-*  - Animation editor 40% : Review and blend animations like in Unity 4 link:http://unity3d.com/unity/animation/[http://unity3d.com/unity/animation/]
-*  - Facial editor 40% : Like FaceFX link:http://udn.epicgames.com/Three/FaceFX.html[http://udn.epicgames.com/Three/FaceFX.html]
-*  - Shader editor 40% : To create shader like in UDK (not important. can be replace with shader node)
-*  - Codegen 40% : To create logic like in UDK or Blender, link:http://www.unrealengine.com/en/features/kismet/[http://www.unrealengine.com/en/features/kismet/]
-*  - FSM editor 40% : To create functional system and AI ( nice one)
-
-
-==== C – 2D Support
-
-*  - Sprite editor 70% : To create sprite like Flash but for texture not vector (not important, there is a lot of tools)
-*  - Texture maker 20%: Like link:http://www.texturemaker.com/screenshots.php[http://www.texturemaker.com/screenshots.php]
-
-
-==== D – Experimental Tools
-
-*  - Forester and tree editor: like in Unity link:http://docs.unity3d.com/Documentation/Components/terrain-Trees.html[http://docs.unity3d.com/Documentation/Components/terrain-Trees.html]
-*  - Level generation tools : City,Road,River… and Dungeon
-*  - Collaborative editing system: like Hero engine. link:http://www.heroengine.com/heroengine/heroblade/[http://www.heroengine.com/heroengine/heroblade/] . 
-*  - SVN with Entities data: Even in this cool project they do it based on SVN link:http://the-witness.net/news/2011/12/engine-tech-concurrent-world-editing/[http://the-witness.net/news/2011/12/engine-tech-concurrent-world-editing/] .
-
-
-=== Tools for Three Rings
-
-
-[IMPORTANT]
-====
-Go to Three Rings setup first if you read it yet!
-====
-
-And last but most important is a working MMO Game skeleton based on Three rings framework.
-So it’s also a chance for you to have the most powerful tools right under your hand at once. We are standing on the shoulder of the giants!
-
-
-==== Getdown
-
-
-=== Tools for Arianne
-
-
-[IMPORTANT]
-====
-Go to Arianne setup first if you read it yet!
-====
-
-
-
-==== Map Editor
-
-
-==== Tiled
-
-
-==== Script
-
-
-==== Client
-
-
-==== Server
-
-
-[TIP]
-====
-
-P/s: I have no problem with sharing this suite of tools in Update center after November of this year, when the National Software Contest ended
-====
-
-
-
-== TOOLS MANUAL
-
-[To be continue…]

+ 0 - 12
src/docs/asciidoc/jme3/atomixtuts/prince.adoc

@@ -1,12 +0,0 @@
-= prince
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-Game like Prince of Persian - Sand of time
-
-With complex animation and cut scene, with replay, time bullet and fancy stuffs.