Source Hi TERASOLOGY :)

Upekshe Jay

New Member
About GSoC idea "Renovation for MasterOfOreon"
Hi Everyone,
I am Upekshe Jayasekera, I am currently a final year Undergraduate of Department of Computer Science & Engineering, University of Moratuwa. I read the GSoC idea mentioned above (And also read the github issue regarding the idea). I am interested about this idea since I am good in Java(I have worked in the industry for my internship) and I have some knowledge about simple AI algorithms. I have learn subjects such as Intelligent Systems, Machine learning. "Intelligent Systems" course cover most of the content ( up to 16th chapter) of the book "Artificial Intelligence :A Modern Approach" by Stuart J. Russell and Peter Norvig. And Machine Learning is about supervised and Unsupervised learning methods such as SOM, SVM, Decision trees, Clustering techniques,.. and so on. So I would like to use the knowledge I have learned in a project like this.
I really appreciate if you can give me a chance to involve in this project as a GSoC student.

Thanks and Regards,
Upekshe Jayasekera
Undergraduate
Department of Computer Science and Engineering
University of Moratuwa
Sri Lanka
 

manu3d

Active Member
Contributor
Architecture
Hi Upekshe, welcome aboard!

Sri Lanka! My wife and I took a trip there a few years back! We had a great time. It's a beautiful country and the people where very welcoming and kind. By the way, chilled king coconut is the best drink ever.

Now, back to business. AI is quite interesting to me, but the reality is that the rendering engine is giving me plenty to do already. I therefore hope somebody else will help you with this. That been said, if I remember correctly a number of AI-related tasks can be parallelized. In this context, think GPU, both client and server side. It might give us some architectural headache to have to share GPU resources between graphics, AI and, ideally, Physics - right now the (client's) GPU is only used by the rendering engine. But it would be good if somebody poke in this area and eventually triggers some serious rethink on how to handle these issues.

Again, welcome aboard!
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Hi @Upekshe Jay ! We are getting more and more new countries on the map these days :D

For the MOO Overhaul (issue #2078) I would start out with some basics you can probably play with a little right away before doing a proposal, just to see how you like the code. The first round of changes should probably be focused on logistics of the module(s) involved along with simple "dumb commands" that focus on pathfinding alone just to make the menu more functional.

Testing out the ability to issue basic command including in multiplayer that'll just instruct a single Oreon to complete a single task such as moving to a particular spot or planting something. We have an older basic AI system that supports some of that stuff without the behavior tree AI.

The trick is the deeper AI will quickly run into the behavior tree overhaul which is a full GSOC-level proposal on its own, focused on the AI itself, supporting complex tasks. MOO is more about how a player would interact with the Oreons and extend the system. How do you design the menus, how do you spawn Oreons, how do you keep track of who is doing what, that sort of thing. Maybe even assigning them to rooms in a base of some sort. How do you find them again?

Once upon a time we had a "slicing" system that would let the player look into the world by making all blocks above a certain level invisible (much like viewing the world in 2D like in Dwarf Fortress). That gets into some potentially tricky rendering though.

@Mike Kienenberger who originally prepared MOO is still around via email but I'm unsure how well he remembers the code or if he has any time to help out these days.
 

Upekshe Jay

New Member
Thank you very much @manu3d , It is nice to hear that you have visited SL and had a nice time. Since you have mentioned King Coconut, I bet you have visited down south part of the country including Galle, Matara :) . About the shared GPU resources, I will think about that issue.,
@Cervator Thank you very much for the overview, I think I might need to get used to some terms used by TERASOLOGY :) . I read the github issue you mentioned. I think it is a nice point to start after looking at the code. But until 11th of march I have some exams to write. So, I might not have much time till 11th march. After that I would really like to look in that :)
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Hi @Upekshe Jay and welcome :)

Besides the topics directly related to AI like MOO overhaul, you might want to look out to the general fields of generation (like cites and other "meaningful" structures) and simulation (simulating a city population, fast-forward simulation of world history, ...). Those often deal with search spaces or "agents" in all forms. These two issues go in this direction: #943, #944
Take this just as a side note, MOO overhaul is as good a topic as these ;)
 

Upekshe Jay

New Member
@Skaldarnar
Thank you very much for the information :) . Those tips always helpful to understand the projects well. I read the two issues. The second one #944 Agent-based simulation of land usage, is really nice idea. :D
 

Upekshe Jay

New Member
Hi all. sorry for long silence, I had series of exams to complete, they ended yesterday. I have a small question. How can I build Master of Oreon, how is it connected to terasology. I downloaded Terasology v0.3 but it seems like not working., I will try to build the source code in my PC. Can I have some advice about how can I use Master of Oreon with Terasology..
 
Last edited:

Upekshe Jay

New Member
Hi all. sorry for long silence, I had series of exams to complete, they ended yesterday. I have a small question. How can I build Master of Oreon, how is it connected to terasology. I downloaded Terasology v0.3 but it seems like not working., I will try to build the source code in my PC. Can I have some advice about how can I use Master of Oreon with Terasology..
Sorry for the inconvenience, V3.0 is running. I was using a bit older version of java. :/ . Now I updated to 1.8.73 . Itz now working.
 

Upekshe Jay

New Member
Hi again,
I really appreciate if someone can give me a simple walk-through how the MasterofOrion module effects the Terasology game play.. Thanks :)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Hey @Upekshe Jay and good to know you got a bit further :)

To actually get the MOO module you can fetch it with the following Gradle command: "gradlew fetchModuleMasterOfOreon" (run from a command prompt in the root of your Terasology source workspace)

That'll cause Gradle to go clone the actual MOO module on GitHub to /modules/MasterOfOreon in your local workspace. After that's done run "gradlew idea" to regenerate the IntelliJ project files, that should prompt for a restart.

After that you should have the module hooked up correctly and building along with the main project. Run the game and you should see it in the modules list :)

You can use "gradlew fetchModuleX" to fetch any existing module (just replace "X" with its name) in that fashion, including source versions of any dependencies (MOO has a few). If you don't have the source of a dependency its jar file will be placed in /modules by Gradle. If you later add the source it'll be used for compilation instead of the jar file, but at runtime the source and jar(s) may conflict so best to delete any jars in /modules if you've later gotten source versions.

The actual goal for MOO, as you noted in email, is mostly unimplemented, with only a few commands working. Many more exist in the menus and some might be clear enough to implement, others we can get into later if you want to move further with the idea and get everything running right :)
 

Upekshe Jay

New Member
Small question. The master branch seems to be running on the engine version 0.54 . But for MOO it needs version 1.0 .
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Small question. The master branch seems to be running on the engine version 0.54 . But for MOO it needs version 1.0 .
Yep all development should be done on the engine's develop branch :) The master branch is more for reference ("This is how the code looked like last release"). Really it could just be a Git tag rather than a branch, I'm just having a hard time letting go of branches as a code automation guy :D
 

Upekshe Jay

New Member
I tried the Development branch and it worked out well, the instructions built the project without any problem. I play around a little more. I tried to cut a tree. It didn't fell. :O . Is it supposed to be like that..
Anyway about the MasterofOrion. I see the modules add features to the main game. I am currently trying identify a place to crack in to the code. :) . BTW, it would be really great if I can access a documentation to get an overview about some of the classes used in the code.
Thankz
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
For documentation you have a few options:
  • Some/most modules have a thread in the Module forum. Varies how much info though, the MOO thread only has one post: http://forum.terasology.org/threads/master-of-oreon.1015/
  • The engine wiki has the general dev setup doc + some basic guides on how the fundamentals work like the entity system and events
  • We've done some work on tutorials and are making more. There's one on world gen and one on the asset system
  • There is decent javadoc in some parts of the code. If a feature you're examining in one module is undocumented and hard to follow look for a similar module and see if it has better doc or clearer logic
  • If you at all learn some stuff about some code that isn't documented then document it! We love getting more documentation and it is easy to do anywhere but the deepest darkest corners of the engine :)
As for trees falling over at one point they did in Throughout the Ages when you chopped the bottom block from an otherwise intact tree trunk. But over time that has sort of fallen to pieces (pun intended) and now doesn't always work. Sometimes you still get the main trunk but all the branches and leaves stay up.
 

Upekshe Jay

New Member
According to the http://forum.terasology.org/threads/master-of-oreon.1015/ this was to "Provide a useable interface that gets us away from 1st-person minecraft clone and closer to DK/DF games" and this is just an interface (UI) and minions is intended to do all the work. The minions module I guess is responsible for spawning creatures to the world. And BTW, DK, and DF are more like have a 2D environment with a 3rd person view. How is it intended to use with this 3D first person view..
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
The overall idea of MOO was to be able to command a bunch of creatures to do all the stuff for you - so compared to DF and DK it would be an even more immersive gaming experience. In a (balanced) gameplay module this may include duties like harvesting corn, baking bread, cutting down wood, getting other resources and dropping them in a warehouse of sorts. In more advanced gameplay you might build up trade routes, miniions would build their own housing, etc.

The MOO module was some sort of test/experiment to some degree, thinking about better (= more intuitive) ways to command creatues and manage an in-game community which grows over time. Implementation wise, you might think of UI and controls to place buildings from some kind of blueprint, look into the code which allows the player to assign some area to some specific task, get inspired by management interaces in other games and try to port them into Teraoslogy/MOO. All the miniion management was initially embedded in books to not break the gameplay experience...
 

Upekshe Jay

New Member
Hi all, I am thinking of start writing the proposal.. Is there any proposed model (like what should be the information I should include) I should follow..
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Top