Posts Tagged ‘puzzle’

Epistory: SAVE THE DATE!

Tuesday, September 22nd, 2015

Hi folks! We are so glad to announce the release of Epistory on Early Access. See you the 30th of September on Steam. Meanwhile, you can visit the Steam page of Epistory and put it in your wish listhttp://store.steampowered.com/app/398850

epistory_earlyaccess_anouncement_455px

epistory_003

Epistory: Automating Action & Reaction

Monday, September 7th, 2015

A tale of candy distribution.

Introduction

Most games can be reduced to a series of actions and reactions. Today I would like to share with you a way to facilitate iteration and expansion of these interactions. It will sound obvious to a lot of people but I would have loved to see this kind of example 6 months ago. When I was not yet used to component based mechanics.

It all started with a simple request a few months ago, we had just designed & implemented the scoring system and we needed items in the game world to be able to give points when activated. Easy, I wrote a small script which would be attached to objects that had to add points when activated. Controlled by our item’s base class, it would be called automatically.

The buildup

As time went on, that simple “points giver” script was updated to include various behaviors like prefab spawning, door unlocking and so on. It worked well but it was not very flexible. So I changed the structure to include a parent class to have a common entry point and place each behavior in a child class.

2015 09 02 17 25 18

It’s not standard notation but you can see the rewards and the items have a base class, and only these base classes interact with each other. The same kind of effect could be achieved with interfaces but I prefer to have a default implementation.

The true power of this structure lies in the modularity. Every trigger or actionable item in the game works with any reward and you can place any number of reward in a game object. The most basic action/reaction you can do is simply “collider – trigger – reward”. The player walks in the scene and something happens (tutorial message, cinematic, …).The possibilities are exponential and a new reward behavior is very easy to add.

Polish & additional features

Over time, features were added. Like the possibility to set a delay between the action and the reward. Camera travelling firing rewards at event points… What started as a joke -“reward” as in skinner boxes- is becoming a running gag: we’ll call this one “reward_kill_player”.

I recently did the same kind of structure for visual effects. A few key points (creation, destruction, hit, …) are exposed via a base class. You just have to derive from it and you get all the hooks that an artist would need to handle animations or particle effects.

Conclusion

The system is currently powerful enough to allow our designer to create our whole in-game introduction & tutorial with only the reward system. Looking back my only regret is that this system was not put in place earlier to have more of the game relying on it. Also, calling it “reward” when it’s in fact a “reaction” was a bit shortsighted.

I can share some sample code if some of you are interested. I leave you with one of the more complex interaction that we can produce.

main schema

P.S.: As a very tangible reward after a long wait between news here’s a few free gifs. Both features were added this week:

- One of the first iteration. Nothing special…

flower power 2

 

- One of the last iteration. Circular pattern, grows from the middle and not all of them at once.

flower power 3

 

- Black mist that will block your path (first iteration, polish will come later)

ink fog

Epistory @ Gamescom 2015

Tuesday, August 4th, 2015

Hi Folks! 

After months of preparation we’re ready to unleash our demo of Epistory and let you play it at Gamescom 2015.

Come and join our adventures at Hall 10.1 Stand E040c. 

 

social_announcement

 

IMG_3147

Visit our stand and get the official bookmark of the game

 

IMG_3148

This is what the wall of our booth will look like

 

IMG_3153

We are ready for Gamescom!

Follow us on Twitter and Facebook to get day to day news about our team @ Gamescom.

@FishingCactus
@epistorygame

https://www.facebook.com/fishingcactus

https://www.facebook.com/epistorygame

Epistory: Fluffy Friday #3 – Burning Brambles

Tuesday, June 23rd, 2015

More on IndieDB

Bite sized news for small stuff. Today: Burning brambles.

fluffy_3_header

Welcome to another installment of our fluffy sweetness. If you missed our Critters gifs last week you can check them here.

Ok! To recap, we had a world quite pleasant to walk in, decent levels and dungeons, epileptic Critters… and a girl riding a giant fox fighting against monsters and corrupted nature. Fighting how? With words. I mean MAGIC FIRE WORDS!

fluffy 3 burning brambles 2 

So, here’s the fire animation, shown in our previous paper on art direction, in action. Yes, we know, burning the forest is bad but these brambles were evil, very very evil.

fluffy 3 burning brambles 3

fluffy 3 burning brambles 1 

Imagine you’re hanging around with your fox and brambles block the road: burn them! There are monsters on your way out from the dungeon: burn them! There are cute critters… wait… stop. May I draw your attention on the fine and not final spell forging animation before the girl sets the world on fire?

Hope you felt the magic. See you next week for another incredible Fluffy Friday!

Have a great week.

Epistory: Fun with bones in Unity

Thursday, June 11th, 2015

More on IndieDB

Discovery of what unity can do in terms of jiggly bones and overriding animations.

The inception

A while back, after slowly becoming mad tweaking animations and movement behavior on our avatar, I decided to have some simple fun with Unity. See where the limit was and what’s possible in a certain domain. Since I was obsessed with the character’s animation, my attention was driven towards improving what our animator gave us in terms of natural movement. Even though the animations were quite good, I wanted some physics madness in there. So I went on a quest to mess with the bones of mecanim.

It turns out it’s rather straightforward to activate the so called “jiggly bones”. A few changes in your model before export does the trick. It does however require a great deal of value tweaking and physics engine know-how. You may follow this tutorial if you want to try it for yourself.

Here’s what I could do as a quick ‘n dirty test. This will *not* be in the game. Even if the effect could be nice, It is at the bottomest bottom of our priorities.

jiggly bones 350px

 

But doing this as a playful “what if” helped me learn a lot about how Unity works with animations and physics. Even better, I would never have thought of what I’m about to show if I hadn’t gamed the system.

A few days later, the movement and animation finally polished, I found one last thing I could do, turn the head of the fox in the direction of where the avatar will go next. Providing a subconscious feedback on the movement. Using the head bone and overriding the animation, it should be possible. Right?

epistory fox head move

 

It turns out it is. This gif was taken when a bug prevented the fox to move or turn so you can clearly see that the head orientation is overridden (and a bit disturbing, sorry).

How to do it

First, you have to get a reference to your head bone:

private void Awake()
{
  HeadBone = /*find the headbone in the hierarchy*/.transform;
}

There’s nothing to do to your model. All you have to do is use the LateUpdate function which is called afterthe internal update of the animations.

private void LateUpdate()
{
  Quaternion
    look_at = Quaternion.LookRotation(Direction, new Vector3(0.0f, 1.0f, 0.0f));
  look_at *= Quaternion.Euler(-90.0f, 0.0f, 0.0f); // Our models are rotated
  HeadBone.rotation = look_at;
}

You can do all sorts of crazy stuff with this.

The result

fox turn head subtle 350px

 

Here you can see the result in game. Slowed down on purpose to make sure it’s seeable in a gif. The effect is very subtle but you can see that the head will always point to the right direction (almost instantly) and the body follows soon after.

The next time you are frustrated with a particular task or simply bored out of your mind after a day of repetitive tweaks. Do yourself a favor and just play with the tools on your workbench. Who knows what kind of gem you’ll unearth.

}

Epistory: Lessons learned while switching to Unity

Thursday, April 16th, 2015

More about the game on indieDB

epistory_c_to_unity2_455px

 

Paradigm Shift

When we started working on Epistory, we had to choose whether to use our proprietary engine or not. For reasons that go beyond the scope of this post we decided to go with Unity. While the prospect of working with a tool as streamlined as Unity was stimulating, after five years working in a workflow dominated by C++ my C# habits were rusty if not inexistent.

After some time with C# I remembered and saw some of the neat tricks you can do with this language. I also received and read a few tips for Unity itself that can do wonders to keep performance high and coding time low. I will keep this as code free as possible and direct you to the relevant documentation -if necessary- to get all the juicy details that would needlessly blow up the length of this post.

Stay organized

While Unity is very flexible and lets you do basically anything, it can be a blessing as well as a curse. If you don’t force yourself to organize the project and the code from the start, it will become messy really fast. One performance hit that is negligible at the beginning but can grow into a big problem later down the road is the caching of your GetComponent(). Basically each time you ask for a specific component in a GameObject, Unity will go through its component list. In most cases you can safely cache the result and keep a reference. If you start adding components at runtime you’ll have to decide whether to cache it or not.

Leave no warnings behind

Even though most programmers will treat warning as error -or at least minimize the amount of warnings- it bears repeating. The more serious warnings are almost always a bug waiting to be triggered. That is even more important in C# because of some leeway given to the developer. For example: you can hide a virtual function if you don’t explicitly add the override keyword to the sub-class function declaration. And a warning will remind you to make your intentions explicit. The difference between overriding and hiding is that the overridden function will call the runtime type and the hidden function will call the compile-time type.

False friend

The switch statement is a good way to keep the code readable. But in this case its behavior is slightly different in C#. You cannot fall through to the next case section. You have to place a break/return/goto… However, there is a walkaround. You can use something like “goto case 1;” to jump to another case. More details here

Missing Link

LINQ can be a powerful tool to interface a program seamlessly with a database. Even though its syntax can be off putting, you should at least try it before you leave it. You can use SQL-like statements to query an xml file, for example. You can also use it to perform operations on IEnumerable (a.k.a. Arrays and Array-like) classes. All you can eat buffet here

 screenshot_epistory_prog2_455px

Daily routine

Coroutines can be achieved in pure C# but Unity made their use very easy and intuitive. It is akin to starting a new thread without the problems associated with thread safety issues like concurrency, race condition & deadlock. The coroutine also behaves like any other member function. It has access to other functions and member variables.

I will leave the implementation details aside (see links below) but know that it can easily be used to provide easing to an object over time or calculate the next score increment. Another, more advanced, use-case is a very elegant way to implement a state machine. More information here and there and state chartshere

Eventful delegation

Event firing and registering is built into the language. Events & delegates are two sides of the same coin. The delegate provides an equivalent to an array of function pointers and the event is the message being sent. This makes for painless event driven programming and we all know how much a game can be event heavy.

This could make a post topic by itself so I leave you with the documentation and an in depth tutorial/study

Epilogue

There you have it. A non-exhaustive list of tips, tricks and gotcha. Thank you for reading and feel free to ask any question in the comments.

Epistory: It all starts with (good) intentions

Friday, April 3rd, 2015

FB_avatarMore about the game on indieDB

The beginning

When you start creating a game. When you think you have a great idea to turn into a great game. When that idea has just been tested and when your team thinks it may become that great game you have in mind. There is something you have to do without waiting. You may have already done it during the early design process but the original vision has changed now that you made different rough gameplay tests and added new members to the team. That thing – the title already spoiled it – is defining your intentions.

Whether you call them guidelines, pillars, objectives or mantra, it is the long term vision, the global idea of what you want to do with your project. You should keep it to the essential, as it will serve as a reference to drive the whole production.

Epistory is a keyboard driven game. So that is obviously one of our intentions. But there is another one we have, not so obvious, and which came from its genre. Define the genre was needed to better define the game and communicate about it, and that is exactly why it was a problem.

The Typing Game Problem

Our core feature is the full keyboard control. So I already hear you say that we could just call it a typing game and move on. The problem is that, when I think of a typing game, I have two things in mind – and it’s not just me, a quick google search will give you the same results. First, it is most likely a mini-game or an edu-game. In other words, something I do not plan to play for a long time, or to have fun with. Secondly, I will only type words. No deeper gameplay, no choices. And eventually my computer will remind me that I am not a very good typer!

Do not get me wrong, those games are not all bad – some are even really fun for a while. But they are absolutely not comparable to Epistory: the term typing game gives the wrong idea. In fact, it is probably harder to explain what we try to do with Epistory using this comparison than starting from scratch – but now that we are here, I will try anyway.

How it works - Move screenshot

Playing a game means making choices

What we absolutely want in Epistory is to make it really feel like a game and not just a typing application. For that, we believe that it requires a non-linear experience and meaningful choices. And when I say meaningful choices, I am not talking about a big decision which follows you for the rest of the game – well, not only that – but constant small choices. A few examples in games would be taking the short risky path or the long safer one, exploring the east or the west of the magic forest first, upgrading one skill instead of another… Even positioning your car in the fastest racing game implies constant quick choices. You made them depending on the track, your opponents’ position, your current speed, the ideal trajectory, and so on.

To make those choices meaningful, I try to remember that as a Past – Present – Future rule. The player needs to understand that he has a choice (Present). He has to know what it means from past experiences (Past, in this game but not only). And he has to expect something in the future from his action (Future). If it is not a meaningful choice, the player is not an actor but just obeys the game as there is no other possibility of action.

We made that one of our intentions – even if it is important in every game – to make sure it was applied to Epistory’s design. I am not going to describe Epistory’s gameplay deeper on this article – there are more to come, but we will not fall into the trap of your ordinary typing game.

Main character concept

A keyboard controlled adventure

So Epistory is an exploration / adventure game, and we like to call it like that. It gives the player the opportunity to explore an imaginary world, use magical powers to interact and fight enemies, and upgrade them as he wants.

You should see the typing aspect as an opportunity, not a constraint. Because that is what we did: using a keyboard as the unique game controller to create new gameplay experiences. Not only to type words, and not only to earn points. We like to say that you will type the story – but that is for another article.

Thanks for reading. Don’t hesitate to support us on social networks.

Website coming soon

Algo-Bot: Kickstarter Update

Wednesday, July 23rd, 2014

Facts, observations and tools that could help you for the future!

Read it on Kickstarter

Hi Folks! 

We really hope that you had a wonderful weekend. Thanks to the Belgian National Day it’s was a long weekend for us and most of the team spent some quality time with their friends and families. 

Back to work, we are doing our best to drain traffic on the project, which is not that easy. Here are some facts and observations about the project: 

  • We are 15% funded.
  • There are still 15 days to go.
  • We need $2,276 per day to succeed.
  • Press coverage didn’t help that much (brought 10 backers – Thanks to them for the support BTW).
  • 1/8 people that visits our page, back our game.
  • The solution is to get known via social networking
  • I am really brilliant in paper crafting! 

Based on that, our action plan will remain the same. We’ll spend hours talking about Algo-Bot on social networks. If you could help (one more time) to drain traffic to the page it would be awesome. You can see the power of your network using simple tools. Here’s one of them.

If you shorten a link with https://bitly.com/ you can track the traffic on it. All you have to do is to copy-paste that shorten link on your browser, add a + at the end of it and press enter. Then, you’ll know how many people clicked on this link, when they clicked and where they are located. You can do this with any bitly-link. Here’s the one I am using for a few months now. Feel free to check its stats: https://bitly.com/1uEHxbv+

The fun part

Today, I took a few minutes to build my Algo-Bot papercraft. It was the right occasion to show to $20+ backers how to build it  :) 

 

 

Just an idea

 We were thinking of creating collector papercrafts with other skins from the game. What do you think? The papercraft would be awesome with the Steampunk skin! 

 

Another programming game

This guys asked me if we could cross-promote each other. After having a look at their project we immediately said YES. Here the reason why we accepted: 

  • We support indies! 
  • It’s a programming game.
  • The concept is quite interesting but needs help to get better.

They only have 31 backers for the moment but I am sure some of you would like to support the project. 

Debugger 3.16 – My daily life as a debug function

Link: https://www.kickstarter.com/projects/1126778555/debugger-316-my-daily-life-as-a-debug-function

 

We all wish you to have a really nice week! 

Creatures Online Update #43 & 44

Monday, July 14th, 2014

Hi Guys! 

Sorry for sharing these updates that late but we were very busy with the Algo-Bot’s Kickstarter campaign. Feel free to have it a look and share it around you :)  

 

Weekly Update #43: The genome patch tool

Read it on the forum

This week we worked on a tool to ensure the Norn genomes will be modified like it should in case of a genome update. It means that if a game update changes the way the Norn behave, we should be able to “update” the already present Norns too. It was a bit tricky, and we still have some work to do on it.

We also worked on an improvement of the loading screen. If for some reason the game data has to be redone, it now displays the progression at the loading (before this modification, the loading bar stayed at 0% for some seconds in that case).

Also, we fixed a bug where the game looked for a pregnant male Norn model and crashed^^”. 

Creatures4_3

 

Weekly Update #44: Technical features

Read it on the forum

This week, we mainly worked on some technical features / fixes.

Whenever selling objects, we now send a message to the server. In case of a server’s latency, selling an object will now be better handled.
We also implemented a “stage” server, which will allow us to keep versions of a game waiting some approval before pushing the modifications for real.
Also, we are working on the science kit, in which the informations are currently too clustered.

We also finished the genome patch tool I’ve mentioned last week. It covers our main progress for these last days.

 

Some previous updates:

Weekly Update #42: Incoming closed beta

Weekly Update #41: Apple validation

Weekly Update #40: Fixing bugs and working on the crafting system

Weekly update #39: The Nest Crash

Weekly update #38: Chasing the white rabbit bug!

Weekly update #37: The nests

Algo-Bot: 24 hours to succeed

Monday, July 7th, 2014

vignetteHi Folks!

The moment you’ve been waiting for has come. Algo-Bot hits Kickstarter for the second time this year and we have 24 hours to do better than the last time.

What?! 24h? But this Kickstarter will run during 30 days!

YES, that’s true but based on our observations we know that we less than 2 days to get as much backers as we can. Because Kickstarter is not about money but about backers! Backers are the key! So, every backer helps even if you back a single little dollar!

You don’t want to back our project? That’s just fine! Maybe you could share it around you and let potential backers the possibility to discover the game. Here’s a short list of what you can do to help us. Do what you want but please, do something :-)

 

  1. Back the game
  2. Watch the video entirely to increase our stats
  3. Share the page a lot on Twitter, Facebook and G+

 

Link to the Kickstarter

Now_Kickstarter_Algobot_Blog