Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411275 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 04:43:47 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCrest - Indirect God Game
Pages: 1 ... 4 5 [6] 7 8 ... 39
Print
Author Topic: Crest - Indirect God Game  (Read 96964 times)
Greipur
Level 6
*



View Profile WWW
« Reply #100 on: June 09, 2015, 05:06:08 AM »

Today I've started with the hyena. I repurposed the skeleton from the lion and changed it according to the images. The way I'm viewing the reference is via the small program called Kuadro, you should check it out!







I've asked Johannes to make a devlog post about how he implemented saves, he'll be available to write it in a few days.
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #101 on: June 10, 2015, 05:16:03 AM »

I have just uploaded the intro cinematic for Crest on YouTube as part of our promotion. It's been in the game for about a month, but I haven't mentioned it in this devlog. Take a look-see.








I wanted to explain the backstory for Crest and give a sort of explanation for why the god only has indirect control and why there exists several worlds. This is a creation tale told by the people.

The trailer was inspired by Plato's Allegory of the Cave. I saw a clay animation that explained this allegory and I thought it felt very mystical. I wanted to reproduce that visual language in our intro cinematic, since our premise is that the people only see a shadow of your words, that's why they have to interpret them.










I wrote a short script which Christoffer did an animatic for.







When we got to implement it we approached the cinematic in the same way as the clay animation, that we had actual models that were backlit. Sometimes thinking in an analogue way can give interesting results digitally. Smiley















In the game you control the transition between the scenes yourself, but we did away with that for the YouTube version.
Logged

oldblood
Level 10
*****

...Not again.


View Profile
« Reply #102 on: June 10, 2015, 05:57:43 AM »

Liked the mood and atmosphere in that video, was a bit more grim than I expected and I liked that. Nice use of the digital shadow puppets, works really well to create that feeling that this is a story being told you.
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #103 on: June 10, 2015, 07:37:51 AM »

Liked the mood and atmosphere in that video, was a bit more grim than I expected and I liked that. Nice use of the digital shadow puppets, works really well to create that feeling that this is a story being told you.

I'm glad you liked it. That's an interesting angle that it sort of feels like an in-game told medium (that one of the people did a shadow puppet show themselves, if I understand you correctly). And yeah, we wanted that dark side to it to set the expectations for the player. Cannibalism is for example something your followers can resort to now, so we wanted to communicate that the followers have a dark side as well.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #104 on: June 10, 2015, 07:38:33 AM »

Nice!

If you're going with shadow-puppetry, maybe you could make the light source wobble and change intensity in such a way that it looks like a flickering campfire? Or maybe get that effect by using a small cloud of lightsources swarming around a small area - which would also fake soft shadows.

That might make it even more immersive!
Logged
Greipur
Level 6
*



View Profile WWW
« Reply #105 on: June 10, 2015, 11:18:03 AM »

Nice!

If you're going with shadow-puppetry, maybe you could make the light source wobble and change intensity in such a way that it looks like a flickering campfire? Or maybe get that effect by using a small cloud of lightsources swarming around a small area - which would also fake soft shadows.

That might make it even more immersive!

We have animated the light somewhat, but it's true that the flickering fire look could be stronger. Thanks for the suggestions, I'll tell them to Christoffer. When we've more time for fine-tuning that's something we could definitely polish.
Logged

Z_guy
Level 0
*


Programmer


View Profile WWW
« Reply #106 on: June 11, 2015, 06:56:46 AM »

Hello thread,

I'm Johannes, the lead programmer of Crest, and I will talk a bit about the save system that I've just finished implementing.
We're using Google Protocol Buffers. Alright, that's it. Roll credits.

Joking aside, it was not actually as straightforward as one might think.
For simple data structures, protobuf is very simple to apply. We're using protobuf-net, which means that we can just add attributes to our code instead of duplicating all our data in Google's definition language.
For example our Tile class (simplified for clarity):
Code:
[ProtoContract]
public class Tile
{
public enum Type
{
Desert,
Savannah,
Forest
}

[ProtoMember(1)] public int x;
[ProtoMember(2)] public int y;

[ProtoMember(3)] public int meshIndex;
[ProtoMember(4)] public int vertexIndex;
public const int VERTEX_COUNT = 3;

[ProtoMember(5)] Type type;
}

Basically, everything with a [ProtoMember] attribute is getting saved.
So far so good. We run into trouble however when we try to save components.
Components cannot simply be new'ed, because they need a GameObject and you need to call AddComponent on that object.
Luckily, you can specify factory methods with protobuf-net (this feature is not documented as far as I could find, so I actually had to dig through protobuf-net's source code to find it).
It looks something like this (this code is also simplified for clarity):
Code:
[ProtoContract(AsReferenceDefault=true)]
public class Animal : MonoBehaviour
{
[ProtoMember(1)] Vector3 objectPosition { get { return transform.localPosition; } set { transform.localPosition = value; } }
[ProtoMember(2)] Quaternion objectRotation { get { return transform.localRotation; } set { transform.localRotation = value; } }

[ProtoMember(3)] public int food;
[ProtoMember(4)] public int energy;

[ProtoMember(5)] public Animal partner;

public static Animal Create(SerializationContext context)
{
SaveDataContext ctx = (SaveDataContext)context.Context;
return PrefabHelper.Spawn<Animal>(ctx.map.animalPrefab);
}
}

This piece of code also shows three other things.
SaveDataContext is a component in the scene that merely holds references to other scene objects that I need during saving/loading.

AsReference is a feature in protobuf-net that allows it to patch references, so that two references to the same object continues to point to the same object after loading, instead of saving and loading two copies. I try to avoid using it since it's not a native protobuf feature, but sometimes it's the best option.

The last thing is my trick for storing position and rotation. Since that's stored on Unity's side, I used properties to get and set them.

That's pretty much it. Let me know if you have any questions about this or anything else.
This has been Johannes with todays wall of text.
Logged

Bluebutton
Level 1
*



View Profile WWW
« Reply #107 on: June 11, 2015, 11:25:51 AM »

Really like the concept, but it looks quite complicated to play. Are you planning on having an in-depth tutorial?
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #108 on: June 11, 2015, 01:11:51 PM »

Really like the concept, but it looks quite complicated to play. Are you planning on having an in-depth tutorial?

Thanks! I wouldn't say that it's complicated to try out a few commandments, it's pretty straightforward to order them to eat and procreate. But it's hard to motivate the player to experiment at the moment. It can sometimes be hard to understand the cause and effect, so we can of course make the feedback better, which we're constantly iterating after listening to our community. It's also due to that the world is still pretty static, so you can write the same commandments over and over and you never have to go out of your comfort zone and learn new things.

Another problem people have is to accept that we use a visual/pictographic language. They expect that we communicate the most important information with written text, but it's impossible to do with our direction (which I explained in more detail before on page 4) since our "words" are concepts rather than a single written word. Of course we use tooltips, but they can't be specific either.

We have a basic tutorial already explaining the basics of the game, especialy the commandment system. This is a placeholder which we added for our early access launch however. Oskar, the lead designer have talked about making a context sensitive tutorial popping up when you need it, akin to the advisors in Civilization 5. My own favourite example would be Darkest Dungeon.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #109 on: June 12, 2015, 12:04:14 AM »

Your commandmends are per tribe, yes? Because if you get a bit of leeway there that kind of lets you "experiment" with one tribe without ruining everything elsewhere Well, hello there!

And seeing two faiths clash might be even more fun!
Logged
Greipur
Level 6
*



View Profile WWW
« Reply #110 on: June 12, 2015, 12:45:09 AM »

Your commandmends are per tribe, yes? Because if you get a bit of leeway there that kind of lets you "experiment" with one tribe without ruining everything elsewhere Well, hello there!

And seeing two faiths clash might be even more fun!

Yes and no, let me explain. We designed each city to work like a city state, with Mesopotamia as role model. The city states in the olden days had a shared pantheon but they had their own patron god. So they all had a shared cultural and religious framework, but the politics separated them. In our case all of the city states have a shared god (the player).






So everyone can listen to the commandments, but since the first part of the commandment is the trigger that can change. For example if you have one city in the jungle and one in the desert only one of them will follow a commandment that is targeted to people living in a jungle. So yes, indirectly you can experiment with a local city. Though, for the most part they all behave like a big ant colony now.

We have several mechanics designed to add religious discussion, and conflict between the communities such as war, diplomacy, trade and religious doctrine. We designed this during the autumn, but we realised that we currently can't promise that for our early access. Our funds are not infinite. So in reality the city states now have the veneer of being independent, but they're really as dependent as the god commands, and not through their own intervention. If we can stay in early access for much longer or do an expansion this is what we'd like to expand. The relationships between people and how they fight over the right way to interpret god. And this is also the most common suggestion on the Steam forum, so our community crave the same things we want to add. Smiley
« Last Edit: June 12, 2015, 12:53:24 AM by Greipur » Logged

Greipur
Level 6
*



View Profile WWW
« Reply #111 on: June 12, 2015, 04:56:02 AM »

Today we're updating the steam build again, and the big one this week is of course cloud saves. Johannes touched upon that yesterday so I won't say no more about that.

Oskar have been busy with straightening out some word relations (how they relate to other words) and tweaking the antelope AI behaviour. Now they have an ounce of self-preservation, fleeing after one of their brethren are attacked. They can also look for other areas to graze if they run out of food.







I have been busy with the hyena, and I just got finished with the model and the paint job. For Crest we use vertex colouring in Blender. Since the lighting is so extreme in our game I prefer to work with Blender and Unity open at the same time and iterate constantly. I can't really reproduce the lighting conditions well in the 3d app so I just put the 3d model into our Unity scene.










When I save the blend file in Blender the preview mesh in Unity usually changes location. This becomes irritating when I have to iterate. But Johannes found out that if you turn off the animator on the mesh it stops changing place.










After I was happy with the colouring I threw in a couple into a game and just imagined how it could look when they've been implemented.












Christoffer has been busy with fixing the animations. All of the human models share the same rig and default walk cycle, but many of them hold items so when he had to change the walk cycle that meant he would need to do a lot of fixes on each walk cycle. Instead he took the old walk cycles and used additive animation, so he masked out all of the old animation except on the arms. Though, this hilarious mistake happened when he didn't mask the right way, so two normal walk cycles fight for control. I wanted to share this moment with you all!





Logged

Greipur
Level 6
*



View Profile WWW
« Reply #112 on: June 15, 2015, 06:11:50 AM »

Oskar has been working on implementing the lions, still very rough of course but you can have a taste for things to come.








« Last Edit: June 15, 2015, 06:35:45 AM by Greipur » Logged

JobLeonard
Level 10
*****



View Profile
« Reply #113 on: June 15, 2015, 10:53:08 AM »

Cool. Hadn't noticed weather effects before, are those new? (sneaky rain cloud on the left)
Logged
Greipur
Level 6
*



View Profile WWW
« Reply #114 on: June 16, 2015, 12:30:59 AM »

Cool. Hadn't noticed weather effects before, are those new? (sneaky rain cloud on the left)

Thanks! The clouds are part of the revamped water/vegetation system we designed during the autumn. We modelled it after reality, the cycle of water. This is the path:


Sea > Clouds > Hills/Mountains > Rivers/Lakes > Sea
Of course, we didn't bother with simulating the sea part.


The clouds are randomised after the cardinal directions, and they are ruptured on higher ground giving away water. No cloud survives the mountains. So some areas will get more water than others, and we will also get something similar to the "rain shadow" effect, so there will always be some areas prone for being dry. The rivers for their part "seeks" low ground and eventually run into the sea.

I've asked Johannes to go into more technical detail in a future post.
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #115 on: June 16, 2015, 04:19:20 AM »

Christoffer has finished the ostrich and threw it into the game just to see how it looks.









I'm currently skinning the hyena, I tend to play around with the rig like a doll and see if it feels nice.











However, since I skin with symmetry modifier on the mesh you can't rotate in all directions, or you'll have a The Thing creature on your hands!









Of course, there's a x mirror option on the skinning in Blender as well. But I haven't really got it working good in my workflow. So for now incidental horror is the way to go.
« Last Edit: June 16, 2015, 04:25:57 AM by Greipur » Logged

Greipur
Level 6
*



View Profile WWW
« Reply #116 on: June 22, 2015, 08:53:44 AM »

Hello! Just wanted to pop in and say that I'm currently participating in the  /r/gamedev Quarterly Showcase on Reddit. Come say hi to me and all the other devs, and post for yourself as well! Everyone is open to open a "booth". It'll be open for another 24 hours.


Oh, and Oskar will make a post about the animal AI this week. Stay tuned.
Logged

OT
Level 0
*



View Profile WWW
« Reply #117 on: June 23, 2015, 07:20:55 AM »

Hey y'all!

All animals in Crest follow a similar model for their behavior but have their own specific actions and values that makes them unique. They are less structured than the followers and are a bit more short sighted. Animals have a singular status that they base what they want to do next, they operate on their current whim:

If their food reaches below a satisfactory level, their status will become hungry. If their energy is too low, they become tired and if it's too high they become restless. They also have a level for their 'randiness' as I've named it in code, which determines when they are interested in mating.



This causes the animals to behave quite a bit fickle. If one antelope is mating with another antelope and suddenly becomes tired, it will excuse itself and go for a strut instead. A lion who is creeping after an antelope might become tired and might decide to take a rest. One thing I wanted to avoid when designing the animals was that their AI was too identical to the follower, and that the player could anticipate their behavior from what they know about the followers. So whereas the followers are supposed to think more long-term and be more calculative in their general nature (without commandments to guide them), animals are supposed to be more of the opposite.

I think it's actually pretty clear how the basic AI for their behavior works if you look at it in the actual code, even for non-programmers:



  • Every TimeUnitUpdate (every game 'tick') the animal checks to see if it's order (current task) has been completed.
  • If it has, it sets up a list of new potential tasks it can perform, first from its status...
  • ...and then from it's fallback tasks, tasks they do when they got no clear goal in mind (like resting, strutting and eating for the antelope)
  • In SetCurrentTask it picks a task from the generated list.
  • On IsTaskGood the animal checks if the current task is possible to perform (for example, if the animal wanted to mate with another animal but that animal is dead, that task would not be possible), and if it isn't it potentially adds new tasks to perform if the animal's status has changed, and picks a new one.
  • After that, it performs its current task and repeats the cycle.

(Note that status updates are not shown in this piece of code, since those updates only occur every 'age', or 5 game ticks)

So that's a little bit about the animals. Hope it has been clear.
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #118 on: June 26, 2015, 05:57:38 AM »

Extended Development and Financing


Hello all. Here's a new update focusing on where we're headed for Crest. We're going to extend the early access period as long as we are able. And we're also going to be more transparent for what we can achieve. Basically we won't be able to fund development further than August as it stands now, but we feel that the game could use another 4 months of development after that.

We've come up with a stretch goal module system that will hopefully communicate our earnest attempt to expand Crest and hopefull garner more support to finish the game. So, we will have an internal quota that we will in some way communicate with our fans, if we fill this quota until August, 31th we will fund September, and at the end of September we'll see if we can fund the next month. Each month is its own self-contained module, so even if we won't get funding for our stretch goals all the way to December, 2015 we'll at least expand the game somewhat.











Here's a quote from our blog post about the different modules:


Quote
August Core Module

This is the module we have promised you since the beginning, and this is the version you will get whatever happens. Though one feature we promised can’t make it on time and we’re deeply sorry. This is: “Followers can explore beyond your initial island and find new ones to live on”. We have decided to make this its own expanded module.

These are the things we will develop during the rest of the summer to fix the core:

    More symbols allowing for more specialized commandments with more outcomes
    Associations; followers will associate your commandments to their perception of them
    More animals (lions, hyenas, ostriches)
    Balancing fixes
    Performance fixes
    Feedback fixes
    Interface tweaks
    Bug fixes

We will try to make the core version as polished as possible so it can function as a stand-alone game.


September Module – Scheming City States

Each city becomes an autonomous city state and in essence selfish, they will form alliances, trade and wage war on each other. As usual you will be able to influence them indirectly and at times their political scheming will feel like a pleasant surprise or a bad dream.

October Module – Faith in God

The relationship with the player is expanded, what you write will affect how the followers will react to your future commandments. Their faith in you will rise when you’re writing commandments in their comfort zone, but when you deviate they will feel uneasy and loose faith temporarily.

November Module – A Whole New World

Several islands that your followers can settle on and travel between. This is the feature we promised for Core Crest, but sadly can’t fulfil on time.

We will also implement a Russian and a German translation of the whole game since these are the biggest communities we have outside of the English speaking world. However, if there is demand for more languages we might fit them in, it depends on the budget and time constraints. You’re welcome to propose other languages.

December Module – Ancestor Worship

Ancestors are the link between you and your followers, they act as advisors but will also chronicle your legacy.


2016 - DLC?

If the interest for the game becomes big enough we will perhaps make a free DLC next year after we have launched Crest.



Do you have any feedback for how to do this as smoothly as possible? I would be happy to hear your suggestions.
« Last Edit: June 26, 2015, 06:07:49 AM by Greipur » Logged

Greipur
Level 6
*



View Profile WWW
« Reply #119 on: June 29, 2015, 04:12:54 AM »

So we've had a great discussion with the people in our community about what they expect and what kind of support packages we should make. I think we'll stick to digital goods, which we'll have to do for our Indiegogo anyway. And they liked that we were upfront with our financial status.


Here's some news from the savannah. Johannes is fixing the water system so there can exist an in-between so it's not just jungle and desert. Though, I haven't decided on the colour palette for it. What do you think? It feels a bit garish now.



Logged

Pages: 1 ... 4 5 [6] 7 8 ... 39
Print
Jump to:  

Theme orange-lt created by panic