Intro what is that bearded figure doing behind the chimney!

What would you like to have in Terasology

  • editor

    Votes: 0 0.0%
  • something else. but i will tell what

    Votes: 0 0.0%

  • Total voters
    12

timagn

New Member
Name: timagn
From: Deepest Finland, currently located in Deepest Germany
Skills: all kinds of internet tech (most relevant here java, databases, ecommerce as profession, game engines & systems as hobby), archeology+history (as hobby), real world craft like woodcraft, house building (you need to live somewhere is not enough. Living with big L requires ability to alter your environment. Drastically. As you please. at least until the neighbour wall or as your wife tell you to ;) ) etc.
Found Via: the Internet
Interests: creating fantastic worlds, either through coding, art, storytelling, penpaperrpg, anything goes.
Extra: In 1997 when I was still young, idealistic and innocent, I had programmed with c++ a nice Master of Magic clone with cool heightmap (couple of years later seen in alpha centauri) and three maplevels, ground+sea, underworld and cloudworld. But turn based mechanics come to dead end when you want to have a massive world with realistic fantastic economics. But, now incredible 17 years later (has it been so long already), I could try my luck with dangerous waters of collaborative open source.

I have today made only the first small local hacks* to it and architecture and clarity of code feels great!
* hacks like getting rid of that mining smoke, fullscreen resolution + menu page for it, changing ome cube textures and increasing that step height to 1.0f to not need to jump all the time while hiking up the mountains
Terasology is like a Manadragon Egg, a shiny small thing still now, but amassing a huge potential! Good job guys! A programmer can never get enough praise for their work, though they do never admit it ;)

As christmas is so near, here is my list to Terasology-Santa! ;)
* Clouds to walk on! And to build on! And they should move, thats what clouds do! And then flying boots ála Faxanadu. And some bird like people who like to steal all kinds of shiny stuff from earth dwellers. But then I realize that there is not yet any..
* ..Animals! this request is actually from my kids, this all started as they wanted to have a pet and I showed them animals in minecraft, which are unfortunately a bit too limited
* More Creatures in general! Races! All of them playable..
* .. and with nice modular interface to bind separate AI-code to those all according to their habits and behaviours (again, perhaps there is already some, but I didnt find it yet, I need to look closer that existing AI code, but usually AI is slippery one, one approach might be better than another, and what would be better than sending armies with own AI against armies controlled by another players AI.
* An easy way to include only selected entities from multiple mods to own mods. Stuff-library, or modconfigurator how ever it would be called. Manual gitting would be awfully time consuming
* I like the more realistic/complex crafting tree, but not those explicite stone pieces. Minecraft got it well with "material->Ideaofmaterial->someotherbutrelatedmaterial", stone-ingridient which can be used to make a wall or a axe or a oven, and in my opinion that should be just pushed a bit further so that location of that stone would matter, built on marmor it would make pillar, in [] shape a portal etc.
* AI+Object+Event+Trigger+Map editor, WarCraft3 had a nice one back then when world was still young. That and a bit more, all in real time would be so cool

But as it is Open Source (thanks again guys for it) I might as well grab the Santa-mask with big white false beard and red plastic nose and start implementing those things by myself..
Even as my mortal life is a bit limited and weekly queue is already choking of cool-stuff-to-do.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Welcome @timagn !

Thank you for the kind words :) Am much in agreement with your egg analogy, as we have much more architecture at this point than content. You can build all kinds of things on top! I like your reference to Master of Magic as I hope to see larger world features like that in Terasology one day. Factions, nations, kingdoms, moving armies, and all that :)

For the toggles you hack in please do contribute them back as toggles in-game :D Most the time we know some things can be annoying but just haven't gotten around to offering settings to tweak at them.

Our skysphere is due for another overhaul, it has remained unchanged for a long time. Earlier on it had proper floating procedural clouds, although you certainly couldn't walk on them. Now we support infinite height, so nothing really prevents you from making a world gen piece to generate physical "cloud" blocks you can walk on (maybe sink through slowly or something). Main tricky part would be simplified rendering of distant objects. That's on the list but not being worked yet, so distant block-based clouds just wouldn't be visible due to the view distance.

Animals and creatures we absolutely need, and they're my personal top wishlist items. In particular intelligent beings able to cooperate and build societies. That's what I tinker away at, slowly, when I find some rare time not earmarked for fun logistical topics ;)

AI currently has been approached from several angles. There are some basic AI classes that just roll their own behavior and update associated creatures along with the game loop. Then @synopia has a whole behavior tree system including an in-game editor (F5) mostly useful in the Light & Shadow gameplay template. He's working on a 2.0 I hope can be the backbone of our system.

We had a 3D in-game crafting setup in the legacy version that hasn't been updated yet. You pretty much built stuff in a 3x3x3 mini-cube and crafted stuff based on sensible recipes that way. We've discussed the topic across several threads scattered around and there are multiple viable systems.

In-game editor for custom objects and behavior would be great. Check out the BT editor in-game, that's a pretty solid start - you can modify AI, live!

Thrilled to see what you come up with! Stay active here in the forum to let us know what you're up to, look around for existing stuff to do, and come say hi on IRC sometime :)
 

chessandgo

Member
Contributor
Hunter
Holiday themed things would be nice . It's hard going on a server and it being bright and sunny, when its snowing and cold out. Seasons would be nice. Imagine having snow and some holiday decorations to set the mood. Some holiday agnostic mechanics and systems would be nice. Like, perhaps someway to custom user texture things. (IE, make those holiday textures). perhaps a way to have custom items/blocks defined via ingredient items. (IE, have a drink construct, that using different ingredient can create different things, like tea, coffee, hot chocolate etc). Perhaps away to make music (like note blocks, but better). so we can get those holiday jingles. You know, basic things, that while insignificant, have a great deal of flexibility and really contribute to the over all atmosphere.
 

manu3d

Active Member
Contributor
Architecture
Love the clouds idea. I selfishly didn't vote it because the whole weather is something I'd like to put my hands on after I deal with the celestial objects (as the sky is definitely NOT the limit). But I didn't think about building with clouds. Very neat idea.

Welcome aboard!
 

timagn

New Member
@Florian thanks for the tutorial video but I want to start from the basics. There is no basic creature mod for just to build over, both DangerMod and Miniions are for sure great but they are already tuned too far to specific directions.

Creatures got most votes above, so I copied heavily synopia* created a new basic module and named it CreatureMod which simply spawns random creatures which interact with each others. I can proudly say it even works :)
CreatureMod.jpg


To be more specific, it works when the code is in Core module, but I didnt quite figure out what needs to be done that components in modules recieve events like onPlayerSpawn and update?

It all works under modules/Core but under modules/CreatureMod events wont arrive. Mod can be activated in "create game" menu and prefabs, and most code and assets etc are working fine from CreatureMod. Only the events wont arrive. Do I need to register the mod somewhere? Am I missing something crucial?

Also I couldnt get the Blender->Terasology plugin to work. With Techne I managed to made some rudimentary models but they are then java files, is there a other way? I was hoping for directory where to add models and textures so that with CreatureMod I could read all that stuff, make nice lists and categories and spawn certain creatures in certain areas.

If I get these problems solved, I would proceed to finish the CreatureMod and commit it to git as mod for basic creature spawning, on which other mods could be built, like more advanced AI, for which it is nice to hear that behaviour trees and AStar-pathfinding is already implemented. Then I will gladly come back to them!

As architecture I was thinking following set of modules which I hoped could build on each others so that no monolithic do-it-all module would be required:
- CreatureMod (spawning, basic models+texturing [already implemented and works])
-- CreatureAI (flee, wander, hunt according basic creature stats [already implemented and works], architecture for adding more AI procedures as modules)
-- CreatureShips (and clouds! blocks are entities, right? entities can be attached to another entities, right? Ship/Cloud could be made by attaching multiple block-entities, or am I hoping too much?
--- ClansAndTowns (creatures forming clans/groups, and building basic structures like dwarven burrows in the earth)
--- CreatureCustomizer (separate head & bodyparts for equipment, texturechanging, animation)
--- CreatureRPG (stats like strength/carryingcapacity-itemweight, health, agility/walkspeed, etc)
---- CreatureFeats (scare, hide, etc)
---- CreatureRTS (click on townhall, assign x peons to cut wood, x peons to mine, hire from tavern x grunts and x spearmen and lead them to glory!)


*I would like to thank synopia for the Dangermod, its code helped to create those shy cows which can be chased around, kids had lots of fun this weekend with it :)
 

Florian

Active Member
Contributor
Architecture
Nice progress!

Btw. @glasz is working on a deer (he posted a video) and I am working on an AI for the deer using the behavior trees from @synopia. I created a pull request for the Pathfinding module with a very first basic stray AI.

I think splitting it in modules is a good idea. So I plan to move the little AI code I already wrote to a new CreatureAI module as you suggested once I find time. I think models (including textures and animation files) should be put in a CreatureModels module, so that other modules can reuse them without being forces to have them spawn in certain ways.

About your question:
... what needs to be done that components in modules recieve events like onPlayerSpawn and update?
Have a look at the Events and Systems wiki page. If that page isn't answering your question please let me know so that I can improve it.

About your issue to getting Blender->Terasology to work. I think @glasz may be able to help you there.

Feel also free to visit our IRC chat channel
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Very cool, @timagn ! And yes you're thinking in the right structure with the differing modules :)

On making stuff work in modules outside of Core, sometimes it is from not having the module hooked back up fully inside IntelliJ or what not. But you've reviewed other modules successfully, so you must have fetched those and gotten them working locally? Usually creating a new module via command line is as simple as:

gradlew createModuleCreatureMod
gradlew idea

The create task makes sure you have the basic files needed like module.txt and so on, and gradlew idea regenerates the project (and fetches any needed dependencies) so it'll be added to the project structure, compiled, and so on. Then gradlew fetchModuleSomethingThatExists is how you can get source easily from GitHub to your local workspace

Would certainly help to get the code online, even if just for review in a placeholder repo. We can always make / rename / split repos later :)
 

timagn

New Member
CreatureMod is now online https://github.com/timomagnus/Terasology

Thanks Cervator, without the gradlew commands it would have been painful.

There are some cows spawning automatically and with stolen staff form DangerMod you can make cows, dwarves and duergars (badass dwarves). In theory cows flee dwarves which should flee player which in turn is hunted by duergars, all implemented with threat level where lower flees higher. In practice its still somewhat chaotic and dwarves seem to do some nasty things with poor cows if cows run against the tree for there is no collision detection between the creatures. Nicely put it still needs "some improvement".

I was shortly wonderin a question: what if I would like to create another mod, lets say CreatureMindMod, in which I would like to use classes from CreatureMod, where do I need to define the dependency as currently from mods you cant use classes from other modules?

Starting to feel confident I wanted to change also stepHeight to 1.0f in org.terasology.logic.characters.CharacterMovementComponent, but I botched it. I managed to ruin my local codebase with reckless IDE usage and I hope damage was limited just to that.

I guess I humbly retreat to background and will make some basic git and intellij exercises before causing more havoc.
 
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Nice! Can't wait to try it out, but I'm on vacation right now and am a bit low on time and without my ideal setup to review stuff. Here are some steps to help you get to a more complete setup including fun with dependencies.
  1. Ask for a couple module repositories to be created for you under https://github.com/Terasology - that's our Terasology "organization" on GitHub. Can ask here or on IRC, a few others than just me can create them. We just need the names you want. You'll get admin access to the repos.
    1. Ideally come up with some very descriptive / unique names for your stuff. "CreatureMod" is a bit too generic (could mean anything with creatures). Can either pick based on exactly what's in the module (usually easier for modules with only one thing in it, like "Cows"), or pick some random flavor naming you like (like ThroughoutTheAges)
  2. Move your content into those modules
  3. Delete and refork https://github.com/timomagnus/Terasology from https://github.com/MovingBlocks/Terasology - that's actually your "CreatureMod" currently but named "Terasology". With a fork of the engine project instead you can develop from there and if you find some needed engine changes (or just fix a bug) you can push those fixes to your fork and make a Pull Request for us to merge into the engine :)
  4. In your second module (CreatureMindMod) add a dependency to your first module in module.txt. Here's an exampe module.txt with exactly one dependency. Run "gradlew idea" and IntelliJ will regenerate its project config including the dependency on CreatureMod for the CreatureMindMod
That probably has some potential for confusion, but just take my word for it and go one step at a time - starting with module naming! :)

For a quick bit of explaining on typical confusion:
  • https://github.com/Terasology is the GitHub organization we keep modules under. Everything you get via "gradlew fetchModuleX" comes from there and we build those automatically and make them available via Jenkins & Artifactory
  • https://github.com/MovingBlocks/Terasology is the engine repo under our MovingBlocks organization - that org is for central stuff like the engine and libraries. Yeah, bit funny to both have "Terasology" as a repo and an organization ... :rolleyes:
  • If you fork the engine repo to your account on GitHub you can more easily make changes against the engine - lots of easy bugs to fix and other things you might run into
  • Any modules under your personal account on GitHub aren't readily available to pull via the "gradlew" commands although you are still free to keep your stuff local like that :)
 
Top