User Tag List

Results 1 to 27 of 27

Thread: Kikai

  1. #1
    3

    Kikai

    Name:  banner11.png
Views: 1236
Size:  436.9 KB
    Kikai - a dark themed mystery, action 3D game with great focus on story and AI

    Prologue
    During his gradual recovery from a chronic disease, a musician and luthier had traveled to a beautiful foreign land. Just to get away, relax in scenic beauty, and maybe find some musical inspiration. He left the crowded, distracting cities to travel all the way to a border town so he could enjoy the best sceneries there were.

    Then the war broke out.

    Everyone lost their minds and chaos ruled. In the midst of all this, he found a boy with a broken leg, crawling against the stream of people running away from the fighting.
    He couldn’t just leave the poor boy. He tried to pull him away from danger, but the kid showed him a picture of a girl and pointed deeper into town. With haste, he helped the boy get to where he wanted to go: a large laboratory. There was screaming coming from the inside.

    They followed the sounds deeper into the building until they encountered a small girl stabbing a female scientist to death.

    The girl passed out and the boy crawled to her immediately. There were three corpses at the scene, two in white lab coats. A picture on the wall showed the dead people and the two kids, all happy and smiling.

    The musician was still shell-shocked, but with the war outside, dangers were already on the doorstep again. He took it upon himself to protect the kids from the war. The boy’s name was Kai and the girl’s was Kira. They showed him the few underground lab rooms that they had access to, and the three of them made it their home while the war raged on outside.

    Introduction
    The game will have action and stealth mechanics as well as puzzle and visual novel elements. We want to focus on the story, the AI and the immersive atmosphere of the game. Playing as the foreign musician, you will explore the mysterious labs, the war-ravaged town and the scenic landscape surrounding it, looking for supplies and answers, while trying to take care of the children and teaching them right from wrong. With our robust AI learning system, the children will respond to your actions and gradually change. Our goal is to deliver the truest, deepest and most emotional experiences.

    The kids’ AI will be developed with Machine Learning, which means they can learn through experiences. For example, if you always kill enemies upon met without mercy, the kids will grow to be violent. If you help other people frequently, they will learn to do the same, etc.

    This is a dark themed game which focuses heavily on story, with tons of mysteries and tiny details for one to discover. That’s why we’re going to try our best to avoid spoilers. Please do too if you are able to discover some hidden stuffs, like the many meanings behind the game’s name (Kikai).

    The Light Novel
    We’re going to demonstrate the game world and tell some stories through a light novel written specifically for the game. A chapter or two will be published every month. We’re not going to spoil much and might even insert some lies and misleading clues. The point is to make sure everyone can feel the game better and imagine what kind of mysteries there are. You will have to play the game to truly understand the characters and mysteries.
    I (Hai) an the writer, Jaco is our editor and Trieu is the illustrator.
    The Light Novel will be available in both English and Vietnamese. A Japanese version is also a possibility.

    We need your help and advises
    - We're looking for a 3D character artist and animator. This is a rev share project so if you think you’re fit and interested, contact us at kikaiteam@gmail.com
    - Follow our Facebook page!
    - Become a Patron!

    The team
    - Hai (writer, programmer, designer)
    - Trieu (concept artist, designer)
    - Jaco (English proofreader, editor)
    - Lucas (3D artist)
    - Josh (composer)
    - Enmanuel (3D artist)

    Influences, works that often come to my mind when designing this game
    - Walking Dead the Game, Season 1
    - The Last of Us
    - Fullmetal Alchemist
    - Metallica’s One (Johnny Got His Gun)
    - Some 1974 Queen songs

    Concept Art
    Name:  encounter_zps8v4b5mug.png
Views: 1206
Size:  457.3 KB
    the earliest concept art - encounter; the scene, art style, characters,... were improvised

    Name:  break_zpsppvxpqpa.png
Views: 1202
Size:  430.0 KB
    break

    Trieu’s the guy, check his other works here: http://ilnegear.deviantart.com/
    Attached Images Attached Images  
    Last edited by skyarmor; 01-28-2017 at 05:15 AM.

  2. #2
    0
    Light Novel's first chapter: #1 - Ink
    (We have better format at Google Doc. Also note that the light novel is written only to introduce the context of the game. All important details are deliberated left out, for you to discover in the game.)

    Prologue

    During his gradual recovery from a chronic disease, a musician and luthier had traveled to a beautiful foreign land. Just to get away, relax in scenic beauty, and maybe find some musical inspiration. He left the crowded, distracting cities to travel all the way to a border town so he could enjoy the best sceneries there were.

    Then the war broke out.

    Everyone lost their minds and chaos ruled. In the midst of all this, he found a boy with a broken leg, crawling against the stream of people running away from the fighting.
    He couldn’t just leave the poor boy. He tried to pull him away from danger, but the kid showed him a picture of a girl and pointed deeper into town. With haste, he helped the boy get to where he wanted to go: a large laboratory. There was screaming coming from the inside.

    They followed the sounds deeper into the building until they encountered a small girl stabbing a female scientist to death.

    The girl passed out and the boy crawled to her immediately. There were three corpses at the scene, two in white lab coats. A picture on the wall showed the dead people and the two kids, all happy and smiling.

    The musician was still shell-shocked, but with the war outside, dangers were already on the doorstep again. He took it upon himself to protect the kids from the war. The boy’s name was Kai and the girl’s was Kira. They showed him the few underground lab rooms that they had access to, and the three of them made it their home while the war raged on outside.

    #1: Ink

    Yet another day on this horrible battlefield.

    With those same eyes, with that same face, Kira has killed again. We were just out on a quick supply run when some young men jumped us. I couldn't stop her in time.
    Kai didn’t react much; he must be used to it by now.
    I know that I’ve got to do something to fix this, but the whole situation is just too overwhelming for me to handle. The stabs of pain still haunt me every day, even though the disease has stopped getting worse.

    Before I got sick, I once had to babysit my brother’s kid, so he and his wife could enjoy a holiday somewhere on the coast. The boy was well behaved. He always listened to adults and was perfectly polite.
    Yet just taking care of him for one day was more exhausting than a 16 hour shift at the factory.
    Now I’ve got two strange kids to take care of. They don’t even speak my language. And the days just seem to go on forever.

    Kai and Kira have already entered the basement, but I’m still here playing my violin in the light of this melancholy sunset. There was a big battle in the east earlier this morning, so it’s been quiet for a while now. I just don’t want to miss the chance to play some music out here, in nature. I don’t think I’ll ever get another opportunity. I choose a peaceful Baroque song I’ve just learned to play.

    I chastise myself for the horrible tempo. Even though I know that the soul and character of a song comes from imperfection, I still want my performances to be perfect. I can always move along with the music if I want more emotion. But this sloppy tempo is just too painful to listen to. What a horrible day this is.
    I sigh, carefully putting the violin back inside its case. I plod up the handful of steps to get inside the house.

    Ink?


    On the way in, I find a multitude of dark splotches that look like blood, but smell strongly of ink. They’re scattered all over the floor, but they seem to lead somewhere. I carefully follow the marks. They lead to the bodies of the two scientists who had been living with the children.

    I try to hold back my lunch as I look at the gaping holes where the chests of the two scientists have been torn open. Empty cavities stare back where their lungs and hearts should have been.

    Around the wounds are sharp and decisive bite marks, as if a huge beast had ripped the scientists open and eaten their innards.
    There are no blood stains around the corpses. Only ink marks. Hundreds of them, scattered violently all around the room, like some kind of macabre modern art painting.
    None of the dark purple-black marks are spatters of blood. Did the beast lick up every last drop?

    Suddenly the danger of the situation sinks in, and I immediately run to Kai and Kira.

    Thankfully, they’re still safe, but there’s no time to waste. I quickly lock all the doors, then recheck every corner of the rooms.
    After having checked and rechecked everything to make sure the rooms are safe, I catch my breath and finally feel a sliver of relief.

    We have dinner in silence. I make sure the kids have brushed their teeth and then go lie flat on my back.
    I soon fall asleep.

    I wake up after a dreamless night, feeling tired and empty.
    Kai is still fast asleep. Kira, on the other hand, confirms that I’ve awakened, staring at me with her blank eyes, and then stares into space impassively, holding her favorite doll in her arms, as always.

    I brush my teeth, wash my face, then go to the kitchen to prepare breakfast. I think of my old house, back in the homeland. It was just a small box of a house but it had a nice warm bath.
    I really wish I could take a bath.
    Once breakfast is ready, I go to wake Kai up. As always, he opens his eyes lightly and then closes them again. He’s awake, he just needs a little more time and effort to get out of bed.
    Funny how a single blanket could turn a leopard into such a harmless sloth.
    After leaving a hot water bowl and Kai’s face towel next to his mattress, I head back to the kitchen.

    To my surprise, the old wooden dining table has already been set. Kira sits in her place, still holding her doll impassively. Her eyes are as blank as always, but I know she’s gradually changing.
    With such a simple action, she has blown away all of my worries and exhaustion.
    Even though my body is tired, my smile has finally come back. I pick up my violin, gently rub Kira’s head, and then start playing a few of my favourite pieces. Kai, having finally left his bed, ambles closer to listen to my music. His face is unwashed, as expected, and Kira is still not reacting much.

    But I don’t mind. I continue to play with a smile on my face.


    During the entire meal, Kai talks to Kira in excited tones. I guess he had some really good dreams last night. Kira doesn’t reply often, and when she does, her voice is so quiet that I doubt even Kai could hear it.
    But I could see her subtle smile every now and then. The whole atmosphere is really warm. It reminds me of Sunday dinners when I was a kid.
    We don’t have to go out today. After cleaning up, I just stand in the corner of the room, watching the kids play.
    I haven’t been in such a good mood for a long time, so I decide to seriously clean up and reorder the rooms. I haven’t really cleaned at all since we started living here a few days ago, and I want the kids to live in a clean environment anyway.

    I start with the books that Kira piled up in the corner after finishing them. I wish I could understand the language, just to know what she’s been reading. There are some books with silly covers, but most of them are too generic to guess.

    With all the books in my arms, I head to the library room.

    This one… goes here.
    Title starts with L… there, that last row.
    This last ro..

    Ink!?

    (We have better format at Google Doc)
    Last edited by skyarmor; 02-05-2017 at 10:51 AM.

  3. #3
    0

    Kai's bravery


    Summary
    Kai learns how to react to enemies from the way the player reacts. He could either be brave, always confronts the enemies without fear or could simply be a coward, just runs away all the time. This bravery of his depends on how the player plays the game.

    Prototype
    At the beginning, Kai is coward in general. His coward level is randomly generated though. For some players, he just runs away all the time. For others, he might actually choose to confront the enemies when in real danger.
    (a rather brave newborn Kai)
    (a not so brave newborn Kai)

    The bravery level B varies from 0 to 1. Kai is bolder when B is closer to 1 and tends to run away when B is closer to 0.
    The cool thing is that this bravery level B differs with situations. Kai won’t just either run away or confront the enemies all the time, he might run in one situation (the enemy is still very far) and confront in another (the enemy has already come close).

    Now let’s see how Kai grows!
    - With an aggressive player, Kai's bravery might change like this:
    >>

    - With a rather shy player, Kai's bravery might change like this:
    >>

    A more balanced player will help Kai grow the bravery level B to around 0.5 for different situations.

    We could also easily expand Kai's observations to base his decision on, not only how far the enemy is or has it detected Kai or not, but also what kind of weapon the enemy’s holding, how threatening it is, is there a closet nearby... The number of decisions could also be easily expanded, adding the options to hide in a nearby closet, setting up traps, etc.

    Note that this model is only for Kai's bravery, not Kai's aggressiveness, since Kai can either knock the enemy off, put it to sleep or kill it when confronted. Kai's willingness to kill is then another model, influenced by the player and different situations. These models can link with each other and by designing different models like these, we could develop really deep and realistic AIs.

    These models also have a learning rate and a momentum used to define how fast the AI learns. So we can control how fast Kai grows or is influenced. For example, killing the first person will make killing a second one easier, while sparing a life or two won’t really make one less likely to kill. A few runaways also won’t immediately turn someone into a coward.

    Programming
    Use a simple Neural Network with Stochastic Gradient Descent.
    Implemented using classic OOP classes without matrix multiplication, since importing libraries into UE could be heavy, buggy and anti cross-platform. Also, implementing my own Neural Network helps boost my understanding of it, which is still quite low.
    To do: Optimize the Neural Network code, make sure SGD works well with data gathered real time in game. Learn more Neural Network, Gradient Descent & Machine Learning techniques.
    Last edited by skyarmor; 01-25-2017 at 08:22 PM.

  4. #4
    0
    I have updated the Kai's bravery prototype post so if you're interested in AI, check the previous post in this thread!
    We're going to introduce our first 3D Artist soon too while the first chapter of the Light Novel's also doing well.
    Cheers guys!

  5. #5
    0
    We're very happy to announce that Lucas has joined us as a 3D Artist.
    We're still searching for some more 3D artists so if you're interested, contact us at kikaiteam@gmail.com!

  6. #6
    0
    We're very happy to announce that Josh has joined us as a composer.
    He's going to work on a special track for the game soon.
    The story behind the track and more details will be revealed once we have a demo to show

    We're also very close to finish the first chapter of the light novel and still looking ceaselessly for more 3D Artists.
    Hope everyone's doing fine as always.

  7. #7
    0
    Looks great Skyarmor, can't wait to see what your team comes up with soon

  8. #8
    0
    Quote Originally Posted by TroJanVirus View Post
    Looks great Skyarmor, can't wait to see what your team comes up with soon
    Thank you so much for your kind comment
    We're going to post more stuffs soon, stay tuned!

  9. #9
    0
    Quote Originally Posted by skyarmor View Post
    Thank you so much for your kind comment
    We're going to post more stuffs soon, stay tuned!
    Will do! Thanks

  10. #10
    0
    I love that log on the top. real nice; good luck!

  11. #11
    0
    Quote Originally Posted by TroJanVirus View Post
    Will do! Thanks
    Thank you!

    Quote Originally Posted by BrUnO XaVIeR View Post
    I love that log on the top. real nice; good luck!
    Thank you so much, more stories coming soon!

    Anyway, we have finished and finally published the first chapter of the light novel, you can check it out here.
    We have also launched our Facebook and Patreon. Please share the game with your friends if you like it !
    More news coming soon!
    Last edited by skyarmor; 02-05-2017 at 10:50 AM.

  12. #12
    0
    Will he ever get that tempo right?!

    Gripping for a first chapter! I'd love to hear more

  13. #13
    0
    Quote Originally Posted by TroJanVirus View Post
    Will he ever get that tempo right?!

    Gripping for a first chapter! I'd love to hear more
    What a horrible practice skipper! Or maybe he was just having a bad day, I need to write more to understand him better
    We're working to finish the second chapter too, but it won't be released until we reach our goal on Patreon
    But Enmanuel, another 3D Artist has just joined us (welcome!), more in-game updates should be up soon, stay tuned!

  14. #14
    0
    Quote Originally Posted by skyarmor View Post
    What a horrible practice skipper! Or maybe he was just having a bad day, I need to write more to understand him better
    We're working to finish the second chapter too, but it won't be released until we reach our goal on Patreon
    But Enmanuel, another 3D Artist has just joined us (welcome!), more in-game updates should be up soon, stay tuned!
    If you ever need help with UI stuff by any chance, I'm your guy!

  15. #15
    0
    Quote Originally Posted by TroJanVirus View Post
    If you ever need help with UI stuff by any chance, I'm your guy!
    Thank you so much for the constant support!
    We're still focusing on the core of the game right now so there won't be UI tasks until March.
    We will remember to contact you once we reach that stage though !

  16. #16
    0
    I like the idea for the AI. It's a pity more games don't make use of neural nets and other machine learning approaches, though I can certainly understand the reasons. It just feels though like for many years now, all the focus has been on bigger worlds and better graphics, and AI gets so little attention.

    I'll be interested to see how you go with this side of things.

  17. #17
    0
    Quote Originally Posted by kamrann View Post
    I like the idea for the AI. It's a pity more games don't make use of neural nets and other machine learning approaches, though I can certainly understand the reasons. It just feels though like for many years now, all the focus has been on bigger worlds and better graphics, and AI gets so little attention.

    I'll be interested to see how you go with this side of things.
    Thank you for the support man!

    And yes, many developers nowadays (especially the bigger ones) should be able to implement sophisticated AI without problems.
    I believe they choose not to simply because complex AI can confuse players, which can lead to a less "fun" game and less sales.
    Focusing on graphics and other appealing factors are easily better choices.
    There are also a lot of young fellows who have been doing great things with Machine Learning and Deep Learning too.
    So although I still need to learn a lot more, I believe that Kikai's AI is technically realistic and doable.

    Let's see how far we can get!

  18. #18
    0


    Teach the kids English (Part 1)

    Introduction
    I have been trying to develop a system where the player can teach English to Kai and Kira. And after skimming through some research papers about natural language processing, chatbots,... I was truly intimidated and depressed. I was afraid that it would take me years of study just to understand how to make a “state-of-the-art” natural language processing system.

    I soon came to a conclusion that I was too systematic, instead of being creative. Why search the whole net for academic articles when my goal was not to create an AI that can discuss philosophy? Making games is so much different from solving real life problems. We can define our own rules, most sloppy logic are plausible. I was coward for being afraid of creating “not good enough” systems.
    We have to be creative. Game systems are fine as long as they work.

    So while I would not stop exploring Machine Learning and other intermediate AI techniques, I’m going to start humble and naive here with my own language processing system. Enjoy!

    Background & Goals
    We want the kids to learn English so they can communicate better with the player.
    The player talks to them by typing sentences into a textbox, instead of choosing from scripted options. The kid will reply if they can grasp what the player said. Below are some of the conversations we want to achieve:

    1. Simple Q&A
    - The player: What’s your name?
    - Kira: Kira
    - The player: Do you like my dishes?
    - Kai: No

    Since the kids are new learners, we can allow them to ignore grammar. By training them with neural networks, they will interpret sentences by patterns rather than by grammar rules and structures. So the following conversation is still plausible:
    - The player: What you name are?
    - Kira: Kira

    Both native speakers and new learners should be able to interpret “What you name are”. Native speakers, young people “deliberately” use wrong, ignore grammar all the time.
    That said, we still need to keep patterns under control, “You what are name” should be interpreted as nonsense. This can be done by creating training data by hand.

    2. Q&A with more context
    - Who are the dead people?
    - Why did you kill the female scientist?
    - Where is that doll from?

    These are the questions that help the player gather valuable information to unfold the mysteries in the game. The player is free to come up with all kind of questions. The kids will answer the ones that they can understand.
    Tell the kids to study English everyday if you’ve come up with some critical questions that they have not yet understand.

    3. Instant Enquiries, Ask for help & Planning
    - Are you hungry?
    - Where is Kai?
    - What kind of stories do you want to hear next?
    - We’re running out of water, do you want to go get more tomorrow?
    - Do you want me to play some music for you now?
    - Can you help me find some batteries in the other rooms?
    - Put the clothes on the floor back into the closet
    - It’s still early, go read some books

    The kids will answer, act differently, depending on their states and other conditions.

    4. Behaviours, habit and manner related
    - Please don’t go out alone next time
    - Don’t talk to strangers
    - Put the book back to its shelve after reading it.

    5. Casual conversations
    - The player: What is your favorite band?
    - Kira: Pantera.
    - The player: Ah okay. They’re great and all, but have you listened to Iron Maiden?
    - Kira: No. Tell me more about them. Are they metal?

    6. Conversations which the kids start
    - You look tired, are you alright?
    - Have you taken your pills today?
    - What will we have for dinner?
    - Do you even have a name?

    7. Complete nonsense
    - The player: Kai, how much wood would a woodchuck chuck if a woodchuck could chuck wood?
    - Kai:
    - The player: Hah!
    - The player: Kira, how much wood would....
    - Kira: Shut

    Finally, our main goal building this system is to help the main characters communicate and interact better. So instead of a system that relies heavily on complicated patterns and grammar rules, we will focus on the kids’ personalities and their understanding of the world around them. How the kids “feel” and interpret a word is more important than that word’s formal definition in a dictionary. As long as talking to the kids is fun and informative, we’re solid.

    So we will have to come up with creative and effective ways to represent words, objects, events, relationships, etc for the kids to understand as well as getting better at understanding. Since we don’t want the kids to know everything right off the bat.

    Problems to solve

    1. How can the kids learn patterns to interpret what the player says?

    2. How can they build up their own expressions, answers?

    3. How can they remember the context of the current conversation to maintain a consistent one? For example:
    - The player: What is your favorite band?
    - Kira: Pantera.
    - The player: Any others?
    Kira is expected to know what do others refer to so a simple sentence by sentence algorithm is not good enough.

    4. How can they maintain consistent memories? To avoid:
    - Kai: Carl, let’s go!
    - The player: I’m not even Carl.
    - Kai: Paul, let’s go!
    - The player: I’m not Paul, and we just agreed to stay home 2 minutes ago.
    - Kai: Nevermind then, Carl!
    Again, a simple sentence by sentence algorithm won’t work.

    5. How would the conversations affect the kids? If they do, how? Will the kids learn new things from the conversations too?

    I will tackle these problems and update their status with each development log. More problems, suggestions and directions are well appreciated!

    How the kids learn
    They will mostly learn the language through books themselves. The player can help them study or tell them to, but they will mostly study on their own.

    The books the kids learn from have different chapters. Each chapter brings more knowledge, which help improve their English and other skills. This gradual learning works well because it does not require huge data right off the bat.

    They both start with English starter books for kids. When they reach a certain level, the player can show them more kinds of text. It can be some moral short stories, simple cooking recipes, etc. The kids will grow differently if they are given different texts, in different orders. Their levels differ too, Kira will likely to spend more time studying so she will get better faster than Kai.

    The player will first teach the kids the alphabet and numbers by clicking a button and everything is done. A mini game for this might be okay but is unnecessary for now.

    Programming, Demo
    Will be demonstrated clearly from the next part.

    References, inspirations
    1. Natural Language Understanding: Foundations and State-of-the-Art
    2. Making a chatbot that drives a narrative in sci-fi exploration game Event[0]
    3. Deep Learning for Chatbots, Part 1 - Introduction

    P/s: Please forgive me for making dumb English mistakes while trying to teach the language itself to AIs

    On a side note, our 3D artists have been working hard, pumping out new models everyday! We will start showing stuffs once ready.
    Our composer has also recorded some really cool demos, the light novel is doing well and more concept art will be published next week, stay tuned
    Last edited by skyarmor; 02-05-2017 at 11:26 PM.

  19. #19
    0
    Teach the kids English (Part 2)

    Introduction
    I have come up with a “plausible” language system design and have been working on it. I start with recognizing sentence types (normal sentence, question and order) using a Neural Network with Batch Gradient Descent.

    System Design
    This system’s goal is to simulate smart chatbots. It takes a sentence as input and is expected to produce a reply as output. For example:
    - Input: What band do you like?
    - Output: I like Pantera
    - Input: Any others?
    - Output: I’ve been listening to Iron Maiden too, they’re solid.

    The player will produce input by typing into a textbox and the kids will reply.

    Since we want the kids to remember the context of the current conversation, their relationship with the speakers, as well as inserting their own opinions, feelings and thoughts into their interactions, a simple sentence by sentence matching system won’t work.
    Instead, I will run the input sentence through a few different neural networks and functions to extract a bunch of useful details. These details will then be combined with the context object, the kids’ personality and state objects to construct a reply.


    A small taste of MS Paint

    We will want to extract the following details;
    - Sentence type (Normal sentence, question, order, etc)
    - Question type (Ask for reason, fact, mean/way, etc)
    - Main subject
    - Main object
    - Main verb
    - Main adjective


    For example:
    1. What is your name?
    - Sentence type: question
    - Question type: fact
    - Main subject: listener
    - Main verb: be
    - Main object: name

    2. He loves cake
    - Sentence type: normal sentence/inform
    - Main subject: he
    - Main verb: love
    - Main object: cake

    Recognize sentence type with Neural Network
    I will demonstrate my steps building a neural network which can recognize the sentence type of the input in this section.
    Since many things are still unclear to me, any suggestions, corrections and clarifications are well appreciated.
    I also believe this article is a good start. If you’re familiar with Neural Networks and interested in smart chatbots in games. Feel free to go along!

    Step 1: Define the Neural Network
    I split the input sentence into words, instead of characters or chunks of data so I could control the vocabulary of the kids. The “?” and “!” mark are each counted as a single word.. The maximum number of words an input can hold is 15. That should be enough to cover most “meaningful” sentences in our game context. So we will set the size of the input layer to 15.
    Observation: If our date set is large enough, reducing the size of the input layer to around 10 won’t improve our algorithm performance much!

    The output layer will have 3 neurons, used to classify Normal sentence, Question and Order. I use Sigmoid function and 6 hidden neurons in a single hidden layer.


    The Neural Net model without bias neurons

    Step 2: Generate and process Data
    We can easily build a list of common nouns, verbs, adjectives then write a program to generate normal sentences, questions and orders from these words. My current data set has 500 sentences, which I mostly generate by hand and copy-pasting patterns. It’s easier to manage for now.

    normal.txt
    questions.txt
    order.txt
    Because I am tired
    Clean food is good
    Dinner is ready
    Food need to be clean
    Goodbye
    He is bored
    ...
    Are you alright?
    Are you fine?
    Are you happy now?
    Are you hiding something?
    Are you hungry?
    Are you okay?
    ...
    Admit it
    Answer me
    Be careful
    Be quiet
    Be yourself
    Beat it!
    ...

    You can get the full data set here.

    I then read the sentences from the files, extract words from them then fetch into a std::map like this:
    Code:
    std::map<std::string, int> words;
    ...
    if (words.find(newWord) == words.end()) {
        words.insert(std::make_pair(newWord, words.size());
    }
    So now each word is labeled with a different number. We can then transform the input sentence into a std::vector of these numbers to fetch our Neural Net. I thought of 2 different ways to order the words:
    Either place the words right at the head: [ what, is, your, name, -1, -1, -1, … ]
    or in the middle: [ -1, -1, -1, -1, what, is, your, name, -1, -1, … ]
    I quickly tested both version and their performances are pretty close if our data is large enough. Placing the words in the middle seems quite interesting but the first way feels more stable to me.

    I then perform a simple feature scaling. I don’t know what is the best way and why not doing this hurts the algorithm a bunch. For now, I’m simply dividing each number in the vector by the number of known words:
    Code:
    res[i] /= words.size();
    With that, we have been able to set up the training data. A training case should look like this:
    - input: { 0.317073, 0.198171, 0.131098, 0.344512, 0.0121951, 0.0152439, 0 0 0 0 0 0 0 0 0  } // What is your name?
    - output: { 0, 1, 0 } // Question

    We can also write a simple function to auto-correct unknown words, like “wat” -> “what”, and transform plural nouns to singular, singular verbs to plural (“dogs” -> “dog”, “eats” -> “eat”), etc. More on this on upcoming articles.

    Step 3: Training
    With the data ready, I train the Neural Net with Batch Gradient Descent. Since I have very poor data, only 500 sentences for 328 different words, I have to run Gradient Descent with a small learning rate (0,025) for 600 iterations! The result is below, which can be said to suffer from both underfitting and overfitting (What???). I couldn’t even reach 80% accuracy on the training set, need better data!


    Excuse me if you could see “Neuron Network”, I was not really bright

    I’ve also recorded a video inspecting the trained neural net. Check it out

    So I’ve been able to create a neural net that works, but not well. It can’t fit the training well enough, reaching only 77%~79% accuracy on different runs. I will start working on the data first, then tackling more minor problems that I’m still unsure of. Like trying different hidden layer numbers and sizes, tweaking the learning rate, etc.
    Again, I will be very happy if we can form a group working on smart chatbot, not specifically for Kikai, but for games in general. Any comments, corrections, suggestions and questions are well appreciated.

    Anyway, of the 5 problems that I’ve mentioned in the first article, this article only touches a small part of the first one, many more discussions are coming soon, stay tuned!

    References
    Online courses for Machine learning:
    1. Machine Learning, taught by Andrew Ng
    2. Neural Networks for Machine Learning, taught by Geoffrey Hinton

    Implementing Neural Networks in C++
    1. Tutorial Video
    2. Detailed Article with Source code

  20. #20
    0
    Teach the kids English (Part 3)

    Introduction
    I have created a “word with labels” system which allows the kids to learn every single word, instead of learning only patterns. The kids have also been able to respond!

    Overfitting models
    In the last article, my neural network model seemed to underfit the training data set, with an accuracy of only 77%-79%. It turned out that the model was alright. To improve the algorithm’s performance, all I need was to change Visual Studio’s solution configuration from Debugx86 to Releasex64 then run 20000 iterations of Gradient Descent. Last time, it took the program almost 100 seconds to run 600 iterations, now it takes roughly 10 seconds to run 20000 iterations with over 90% of accuracy.


    Sometimes, all you have to do is running more and faster!

    Passing 90% is always good thing, but not necessarily good enough. It could be very annoying for the player if the AIs “accidentally” fail to recognize simple patterns like “Good morning” or “Are you hungry?”. So I want to get as close to 100% accuracy as possible. I will largely increase the number of known words / number of training cases ratio and hopefully the algorithms will overfit according to known words. Then all we need is to feed more words and training data. The approach is not that hard to implement as for a single word, we can automatically create many different type of sentences which contain that word. And it works for the fact that we should not expect the kids to understand sentences which contain too many unknown words to them, while they are expected to understand sentences that they have learned before. In short, we’re heading for overfitting models with a lot of data for our neural networks. Also for this reason, I’ve added another hidden layer then changed the neural network’s size from 15-10-6 to 15-12-12-6 to help fit our training set better.

    A “Word with Labels” System
    To help the kids interpret words and sentences better, I’ve built a system which marks a word with one or more labels.
    For example, the word “you” is labeled “listener”, “good” is labeled “adj”, “fish” is labeled “animal” and “food/drink”, etc.
    This already helps the kids find the subject and object of simple questions like “What is your name?” and seems to be very helpful in the future.

    Wait? If we label words, then shouldn’t a parsing system work too? Many games have succeeded using this approach, right?
    We will have to stick to Neural Networks and other Machine Learning techniques to simulate the learning process of the kids. These techniques also allow the kids to learn many different kind of complex sentences and expressions. At the end of the day, both approaches should work if done correctly but I still prefer Machine Learning because it’s simply fun and interesting as hell.

    For now, we have 14 labels, which can cover many words already.

    Code:
    enum EnumWordLabel {
    
    	// Can be adjective (good, beautiful,...)
    	word_label_adj = 0,
     
    	// Can be verb (help, take,...)
    	word_label_verb = 1,
     
    	// Can be noun (name, age, color,...)
    	word_label_noun = 2,
     
    	// Can be place (room, house, mountainside,...)
    	word_label_place = 3,
     
    	// Can be time (morning, afternoon, o'clock,...)
    	word_label_time = 4,
     
    	// Can be tool (pen, gun, sword,...)
    	word_label_tool = 5,
     
    	// Can be object (table, machine,...)
    	word_label_object = 6,
     
    	// Can be human (miner, worker,...)
    	word_label_human = 7,
     
    	// Can be animal (cat, dog,...)
    	word_label_animal = 8,
     
    	// Can be plant (tree, flower,...)
    	word_label_plant = 9,
     
    	// Can be food or drink (cookies, water,...)
    	word_label_food_drink = 10,
     
    	// Can refer to the listener
    	word_label_listener = 11,
     
    	// Can refer to the speaker
    	word_label_speaker = 12,
     
    	// Can be other (what, who,...)
    	word_label_other = 13,
    };
    Since the kids don’t know English at the beginning and only gradually learn it, we still have plenty of time to gather words and label them. And since we split the game into smaller games and chapters, we can still work on the word database after releasing the first few ones.

    More Sentence Types
    We have added two more types of sentences: greetings and partings.
    With “Hello”, “Hey there”, “Good morning”, etc marked as greetings and “Bye bye”, “See you later”, “Goodbye”, etc marked as partings.
    The neural net has been working well so far:


    Do not worry when you see the ratio of known words over training cases is too high, most known words are not yet used in the training cases. You can also see here that I now use the F1 score to judge the performance of the algorithm, instead of using only recall in the past.

    Coming up with Responses
    The kids have been able to respond, but only to simple sentences that they can easily interpret. They are not yet aware of the context of the conversation too. I will cover this topic more in-depth in later articles, once the system is highly improved.


    Autocorrect the Input Sentence
    I’m using Dynamic Programming (Minimum Edit Distance) to autocorrect words from the input sentence the player types in.
    I’m currently running through all of the known words and try to match the input words with the ones similar to it in size and characters. For example it will try to match “wat” with “what” or “liek” with “like” but not “watttttttttttttttt” with “what” or “tone” with “come”. The algorithm is very beautiful and have great performance after adding a few if else here and there. It is potentially slow once the number of known words becomes very big though. Any suggestions here are well appreciated!

    References
    1. Minimum Edit Distance Dynamic Programming
    2. Dynamic Programming Edit Distance

    We're also very close to finish the second chapter of the Light Novel now. it will be temporarily distributed personally through messages and emails so if you're interested, please drop a message below!
    Last edited by skyarmor; 02-19-2017 at 10:10 AM.

  21. #21
    0
    Kai & Kira on Slack!

    Introduction
    After making the kids respond to simple sentences in the previous update, I have come up with the idea of bringing the kids to Slack so everyone in the team could talk to them!


    Why?
    1. It's fun as hell, to "talk" to the kids through a chat app like that
    2. Everyone in the team can have instant access to the kids, which help testing and suggesting processes a lot
    3. We can examine, test the kids almost everywhere, like using the Slack App on our mobile phones in the train, etc
    4. Updating the kids and running the node server is very straightforward

    How?
    Slack is amazing! They support building bots greatly so the whole process is pretty straightforward.
    First, I made a few tweaks so I could run our Language System program through the command line.



    With that, we can now run the program in node environment, with the child_process.execFile function:

    Code:
    if (fs.existsSync(path_to_program)) {
      execFile(path_to_program, [to, message], (err, stdout, stderr) => {
        if (err) {
          console.error(err);
        } else {
          // send stdout as the reply
        }
      });
    } else {
      // hmmm
    }
    Now adding code to use the Slack's APIs then we're solid.

    References
    1. Automating a C++ program from a Node.js web app
    2. Slack's bot users Introduction
    3. Slack Developer Kit for Node.js
    4. Slack Building Bots Guide
    5. A Super helpful tip. Also, do not forget to add your bots to the channels they need to post messages to first!
    Last edited by skyarmor; 02-20-2017 at 11:36 AM.

  22. #22
    0
    Teach the kids English (Part 4)

    Introduction
    I have improved the whole language system greatly. It now has a rather solid structure and flow, with other supporting systems like the NPCs’ short and long term memories, different contexts, relationships between the characters, etc. I have also added some random factors so the kids won’t respond exactly the same every time.

    The Structure/Flow of Conversations
    There is a class called ConversationContext which holds the information of each conversation. The most basic information is the participants of the conversation. Apart from that, each said sentence by a character is transformed into a ConversationQuery, which is saved in the ConversationContext and used to help determine the current context, the main subject, etc of the conversation.

    These queries are also pushed to the participants, so they can follow each sentence, then decide to stay quiet or respond, “change” or learn new things.
    A ConversationQuery holds information like lists of words, adjectives, objects, etc in the sentence, who the sentence is referring to/talking about, etc. These pieces of information are built up from a pure English sentence, to help both the NPCs and the ConversationContext object grasp that sentence.


    MS Paint is back!

    For example, if the player asks “What color do you like”, that sentence is then converted into a ConversationQuery which looks like:
    - the original line: “What color do you like”
    - sentence type: question
    - list of words: “what”, “color”, “do”, “you”, “like”
    - list of objects: “color”
    - list of verbs: “do”, “like”
    - refer to the speaker: no
    - refer to the listeners: yes
    (debug information and empty information like list of adjectives is omitted)

    This query is then sent to Kai and Kira. If they decide to respond, new queries are created from their responses. All these queries are then pushed to the ConversationContext object. For this example, the kids will know that the player is asking about their favorite color and the main subject of the conversation is also switched to favorite color.
    So, how would the kids answer this question?

    NPCs
    The kids (and possibly more NPCs) will hold a lot of information to themselves. From basic information like name, age,... to information about favorites, likes/dislikes, etc. Apart from their own information, which is always correct, they also hold information of other characters which they think is true. For example, if you tell the kids that you are 27 years old, they will remember your age like that. And these pieces of knowledge are different among individuals. So it’s possible to tell Kai you’re 27 and tell Kira you’re 17. They won’t doubt a thing until they talk about it.

    These NPCs also hold values describing their thoughts/feelings towards other characters. For example, Kai’s value for the player will be comfortable, since the player has helped him a ton since the beginning. Kira’s will be uncomfortable because even though the player has helped her a lot too, she just doesn’t trust people that fast. These relationships/thoughts will have huge effects on the conversations between the characters. For example, if you make the kids dislike you, they won’t say a thing to you. Their tone will differ too, so in the beginning, Kira’s sentences are always shorter and colder than Kai’s.

    Other notes
    1. Most of these kinds of information are stored in std::map, which can then be easily stored in binary files. Eg:
    Code:
    std::map<EnumCharacter, EnumCharacterRelationship> relationships; 
    std::map<EnumCharacter, CharacterInfos> charactersInfos;
    struct CharacterInfos {
      std::map<std::string, std::string> basicInfo; 
      std::map<std::string, bool> likes;
    ...
    };
    2. Apart from the conversation context and the kids’ knowledge, there’s also a thing called WorldContext which has direct effects on the conversations too. It holds information like what time it is, how cold it is today, is there much food left in the house, etc.

    3. I have also added some random factors so the kids won’t respond exactly the same every time. These are only interchangeable phrases for now.


    Visual Studio’s Post-Build Event
    I knew there must be something like this but haven’t really looked it up until recently. It’s cool.
    With it, I can now copy the files automatically to the “Kikai on Slack” folder after each build. So whenever I make a change and rebuild, the files are instantly served without the need to restart the server for Slack bots! It’s very helpful for many other situations as well, try it out soon if you haven’t!

    For example, to automatically copy needed files to the server folder for Slack bots:
    Code:
    xcopy /y "$(TargetDir)$(TargetFileName)" "E:\Projects\Kikai\KikaiSlack"
    xcopy /y /e /i "$(ProjectDir)nnet\*.*" "E:\Projects\Kikai\KikaiSlack\nnet\"
    xcopy /y /e /i "$(ProjectDir)sentence_type\*.*" "E:\Projects\Kikai\KikaiSlack\sentence_type\"
    xcopy /y /e /i "$(ProjectDir)words\*.*" "E:\Projects\Kikai\KikaiSlack\words\"
    xcopy /y /e /i "$(ProjectDir)npc\*.*" "E:\Projects\Kikai\KikaiSlack\npc\"

    We're distributing the second chapter of the Light Novel personally through messages and emails in a few days now. So if you're interested, please drop a message below!

  23. #23
    0


    Good day everyone. We have completed the second chapter for Kikai the Light Novel, it's called #2: Lily of the Valley. We only distribute it through personal emails and messages for now so if you're interested, please drop a message below or send us an email/message .

    And in case you have missed the Prologue and the first chapter, you can check them out here.

    Thank you all very much!

  24. #24
    0
    Teach the kids English (Part 5)

    Introduction
    It’s been a month (Feb 5-Mar 5) since we started designing, developing and writing articles about our language system. Let’s see how far we've got!

    The Current State
    -The kids are currently able to distinguish 5 types of sentences: normal sentences, questions, partings, greetings and orders with a vocabulary of around 120-150 words. We train them using a Neural Network with Vanilla Gradient Descent. The current performance on the training data set is 100%.


    With a 3 hidden layers Neural Net, we’ve been hitting that 100% accuracy consistently

    -The kids can understand and remember basic information of themselves as well as other characters like name, nickname, age, likes, dislikes, etc.

    -There are relationships among characters and those relationships will also influence the way the kids speak. For example, at the beginning, Kira’s lines are generally colder than Kai’s.

    -There are already random factors added to the kids’ replies, so they won’t respond exactly the same every time.

    -The kids are also aware of the world context, like what time it is. So they know that a “good morning” in the afternoon is weird.

    -The kids can understand expressions like “I am called Phil”, “People call me Phil”, “Phil is how everyone calls me”, “What are you called”, etc.

    -The kids can understand basic contractions like "I’m", "he doesn’t", "she'll", etc.

    -The kids can understand basic negative sentences like “My name is not Phil”.


    What’s next?
    The system is very young, with all features still in early development. We’ve gone a long way since the beginning, but are still very far from our ambition. The number of tasks/issues/ideas is increasing dramatically, reaching over 30 in just a few days. With our language system becoming more and more stable, do expect us to improve a lot every week!

  25. #25
    0
    Teach the kids English (Part 6)

    Introduction
    Another week has gone by, let’s see how much the kids have improved!

    Improvements
    1. The kids can now answer yes/no questions about the player/speaker
    2. The kids now know that “Dave”, “Murray” and “Dave Murray” can all represent the name of Dave Murray
    - Player: My name is Dave Murray
    - Kai: Okay
    - Player: My name is Dave?
    - Kai: Yes
    3. The kids have started developing their short-term memories, to remember the context of the conversation. So we can now have the following conversation:
    - Player: My name is Phil
    - Kira: ...
    - Player: And yours?
    - Kira: Kira
    4. The kids are better at understanding words too. For example, the kids can now recognize “yellow” as a color, without our need to mention the word “color” in the context.
    - Player: I like yellow
    - Kira: Okay
    - Player: My favorite color is?
    - Kira: Yellow

    5. They also know that a character can have multiple favorites/hates in a single “topic”.
    - Player: My favorite color is red and blue
    - Kai: Okay
    - Player: My favorite color is orange
    - Kai: Okay
    - Player: My favorite color is?
    - Kai: red, blue and orange
    - Player: I don't like red
    - Kai: Okay
    - Player: What is my favorite color?
    - Kai: blue and orange
    6. The kids now respond as “not know” if the input sentence has too many unknown words to them, instead of guessing wildly previously.
    - The player: How much wood would a woodchuck chuck if a woodchuck could chuck wood?
    - Kai:
    7. The kids now have a better understanding of negative sentences (no, not, etc)

    8. The kids have now understood more contractions

    9. The kids can now reply with “Met too” and things like that
    - Player: I like black
    - Kira: Me too
    I have also improved the whole language system and the Slack server a lot, fixed many bugs as well.

    What’s next?
    There are still many tasks, ideas and problems to tackle in the next few months, stay tuned!

  26. #26
    0
    A (rather) Big Update!


    We are very happy to announce that Kikai has turned 100 days old yesterday and still going very strong !
    For this special occasion, we're going to post some of our 3D models and soundtracks for the first time, enjoy!



    Kira!




    Knives


    Microscope


    Exhaust Fan



    Soundtrack #1: The Laboratory


    Soundtrack #2: Theme 2 (WIP)


    Soundtrack #3: Theme 3 (WIP)



    We're also very close to finish the third chapter of the Light Novel now. it will be temporarily distributed personally through messages and emails only so if you're interested, please drop a message below or email us at kikaiteam@gmail.com!
    The third chapter will be #3: The Burning Statues !

  27. #27
    0
    (We have better format at Google Doc. Also note that the light novel is written only to introduce the context of the game. All important details are deliberated left out, for you to discover later in the game.)

    #2: Lily of the Valley


    I watch the river’s surface with a frown, for once able to let my distress show, since Kai is off catching some crustaceans for dinner. At the rate the water level has been dropping lately, this river could be dried up in less than a month. The last autumn winds are making ripples across the water. Winter -- and with it, the dry season -- is just around the corner.

    The river bank is far from town, but provides clean water and food. This has led to a lot of people building shelters alongside it. More and more are gathering here, putting their lives in the hands of this dying river. No rain has fallen since the war broke out. Mother Nature hasn’t listened to our prayers.

    “Shit,” I mumble, as an old couple slowly approaches the opposite river bank. They walk with difficulty, leaning on each other to keep going. Even though I now have my own troubles, with two children to take care of, seeing all these struggling people still makes my heart sink. But we will find a new water source.

    I keep watching the old couple. My throat feels numb.
    Back when I was a young musician desperate for freedom, I dropped out of university and left home to wander. Apart from being a street performer, I also managed to get work as a luthier and a carpenter. I mostly repaired instruments and tools, and never had the chance to build things from the raw materials.
    Life was tough, but it was fun. Every day was another day worth living. Even though I ended up in the middle of this war, I’ve never regretted the decision to leave home. I have grown a lot.
    That said, I still miss my grandfather every now and then. On the day I left, he was the only one who smiled and wished me luck. But his sad and lonely eyes said something else. He’s getting too old, and I worry about him.

    When my thoughts finally come back to reality, the old couple is gone. I call out to Kai. It’s time to go home. The agile boy cheerfully comes to me with a small basket of crabs and freshwater shrimps. It isn’t much, but not everyone has the skill to catch those things by hand. I rub Kai’s head.

    We get up early the next day to go find a new water source. Kai leads the way to a mountainside. I feel a bit apprehensive about the possible danger, but the military camp at the forest entrance helps calm my nerves. If we’re lucky, we might find edible mushrooms or even rabbits. Maybe even the painkiller herb that I’ve been taking.
    We finally stop when we reach a ten-storey waterfall. I breathe in the fresh air and scenic beauty all around me. Cool winds carry leaves over my head as I get close to the waterfall. It’s still pumping down a lot of water, working hard to maintain this pocket of life in the forest here. The air is thick with moisture. It was a long walk, but worth the effort. Kai moved quickly and confidently on our way here. He must have come to this place a couple of times before.
    And we’re not the only guests. The deer, rabbits and other wild animals were all invited. We split into groups, each choosing a private section of the stream from which to enjoy the fresh water.


    We start filling our water bottles. One filled bottle later, Kai is already chasing after some rabbits. I sigh, finishing the rest of the work alone. I find myself wondering if Kira would have been that cheerful if she’d been allowed to leave that heavy building. They are twins, after all.

    Forests have always felt eerie to me, so we soon head back home.
    We’re still in the middle of the forest when Kai abruptly stops. With lightning speed, he plunges into a nearby bush. Someone screams before I can even react. I scramble through the bushes and find Kai pinning a young man face-down on the ground with his mechanical limbs. The unknown man is short and slim, and looks a little younger than me. He doesn’t stand a chance against Kai with that modest body size, so he just screams in anger. He seems to be yelling in the local language so I don’t understand a word. Kai is still on top of him when I get close.
    Those eyes! Those distinct purple eyes!
    The way he returns my stare confirms everything.
    “You are…” I trail off, still stunned.
    “Good day, blood brother,” the man replies with mock cheer.

    With that, there’s no doubt that we are compatriots. I’m a little shocked, since my tour guide said that I was the only Quaserian in town. The Lcorians living here probably can’t even find Quaseria on a map.

    After another glance, I signal Kai to let the Quaserian man go -- he looks harmless anyway. My compatriot suddenly changes his attitude, repeating something to Kai over and over. Judging by his demeanour, he seems to be apologizing. Kai remains hostile, turning his back on the man’s words.
    I talk to the man in my native tongue. His name is Riat and he’s been living in Lcori since middle school.

    His sudden change in attitude seems strange, but he looks nice and honest overall. Maybe I’m just being paranoid. Any man would be outraged at being attacked and pinned down by some random kid. I loosen up and start talking to him more openly. It’s wonderful to see one of my own countrymen again -- it’s been quite a long time since I last met one.
    Riat says that he’s living with other people, including some Quaserians, on a farm further up the mountainside. He asks if Kai and I want to stop by for an early lunch. Apparently the farm is close by, with more than enough food to go around.
    I want to trust him.
    Centuries ago, our ancestors had to fight the greatest empires of the world to defend our kingdom. Hundreds of years of wars have forged an unbreakable unity and allegiance among our people.
    It would feel like treason to turn a fellow Quaserian down, so I accept his offer. Still, I furtively recheck my gun before following his lead. Kai is unhappy, but he falls in behind me.


    We soon get to a breathtaking valley, where the rays of the sun are warm and tender.
    Thousands of plants and flowers live together in harmony here. Together they grow. Together they form an elegant natural art.
    My artistic instinct stirs, making my heart miss a beat. After a deep breath, I slowly look around to find that musical inspiration I’ve longed for. Even Kai has gotten excited, running around to stare at this flower and touch that tree. Riat just stands there with a smile on his face. He seems to understand our feelings.

    After walking around a bit, I find some unusual white flowers. Their facedown petals make them look crestfallen and forlorn. The fact that these flowers grow in their own cultivated squares of soil, far from the rest of the plant family, makes the image even stronger. I go closer to get a better look, and my compatriot follows.

    “Lily of the Valley,” he says.
    “Lily of the Valley?”
    “You don’t know these flowers, right?” he continues. “Understandable. These gorgeous flowers don’t grow in Lcori or in our homeland -- their natural habitat is on the other side of the world. We’re the reason they’re here. We’ve been planting them in this valley. Seed transportation is tough, but they’re very easy to grow. A little cold in the air is all they need.”

    He pauses and glances at me before continuing. “The flowers are also called ‘Our Lady's Tears’, since they look like a mother’s tears. They’re also as kind as mothers. Eating their petals and berries helps with preventing and healing digestive diseases and heart problems. We also cook their leaves and use them to heal skin diseases. And that scent you’re smelling has benefits too. It’s used to cure headaches and stress.”

    It sounds like an exaggeration, but the flower’s scent is truly nice and relaxing.

    “We originally came out here to the valley to plant these flowers for selling and exporting. This area is close to three different countries, so deliveries cost less. With the favorable weather and low land price, it was a perfect plan, until the war broke out. Soldiers don’t come all the way here to fight, but all of our deals have been postponed. To survive, we became a self-sufficient community. We were mostly foreigners at first, but more natives have joined us to hide from the war, so it’s been really noisy and fun lately.”

    After another pause with another glance, he asks, “So where have you two been living? Wanna join us?”
    “Three, actually. There’s a girl too, the boy’s twin. And it seems to be really safe here, but we can’t leave our house. For personal reasons.”

    Riat looks at me when I mention Kira. We talk some more before moving on.

    Before long, we reach a large farm, filled with dozens of people doing different jobs. Just as my compatriot said, there are many foreigners, and Lilies of the Valley everywhere. We’re led to a big building, right at the farm entrance. My compatriot enters the building first, and then invites us in moments later.


    Bread!
    It’s a warm bakery with Lilies of the Valley planted in every corner. The smell of the flowers fuses with that of the breads, creating one of the finest scents I’ve ever experienced. The owner is an old lady who can speak both Quaserian and Lcorian. She kindly greets us and shows us around.
    It’s still day out, so Riat has to get back to work. He leaves with a wave, and we find ourselves alone in the bakery. I choose a comfortable chair to rest while the old lady shows Kai how to knead flour. The whole atmosphere is very relaxing.

    The bakery’s door swings open and a Quaserian kid runs inside. He politely greets me and the old lady before asking if he could stay and have some bread.
    The old lady starts preparing one of the loaves. I offer to help but she gently declines. So I relax and let my mind wander again, watching the kids play together. The kind old lady pours some milk for them.
    Milk. It’s been forever.

    During our warm meal, the old lady keeps asking about Kira and trying to convince me to move here with the kids. I have to politely decline three times before she stops. She says that she lost her granddaughter some years ago and wishes she could have another little girl to take care of, since there are only boys here on the farm.
    Her teary eyes make me feel awkward. Kai and Kira might have a better life on this farm, but what if that devil organization finds them here? These kind people would be implicated too. It’s better to protect the kids and find the cure for them myself, at least for the time being. I firmly decline one last time. The old lady still looks sad but changes the subject without another word.
    She asks a lot of questions about my disease before preparing some Lily of the Valley berries for me to eat. She makes me eat quite a lot, saying that they will improve my heart’s condition. The berries are a little unpleasant but as the old woman said: “Bitter pills may have blessed effects.” I eat every last one.
    The old lady gets more jovial after each story she tells or is told. We continue talking after the kids run off to play. I have to signal them to be quieter every now and then. Time warmly passes by.

    We leave close to lunchtime. Riat comes back to make sure we don’t get lost on our way home. We leave the bakery happy and grateful, with some loaves of bread, a bottle of milk, and flowers for Kira. I try to give my countryman some money when we part ways at the valley but he refuses. I insist until he eventually gives in.

    As we walk home, I can’t help but feel lucky to have met such good people. Now that I think about it, I probably should have asked the old lady to help me talk to Kai. There are so many things that I want to know.
    Kai is moving very fast, like he can’t wait to give the presents to Kira. He will definitely talk a lot too -- about the beautiful valley, its flowers, the nice people... I have the urge to share the story with someone too, so I know how he’s feeling. But I keep a steady pace. Every time Kai goes too far ahead and impatiently turns around to wait for me, I just give him the “give me a break Kai, it’s been a long day, I’m very tired” face.

    Kira looks a little worried when we get home later than expected, but Kai’s cheerful voice eases her tense posture. I feel a little sleepy, so I just stand there, watching the kids talk. Suddenly, Kira reacts strongly to Kai’s words. A few sentences later, she hurries to my side and grabs the flowers from my hands without a word. She stares at them tensely before dragging me to the library room. There, she stands on a chair, rummaging for something on the bookshelves. I get anxious as Kira keeps throwing books to the floor. She finally stops, checks some pages, and then brings a book to me, open in the middle.

    Page 216. An encyclopedia of plants and flowers written in Quaserian. Images of the elegant Lily of the Valley hit my eyes.

    Lily of the Valley.
    Summary.
    Description, distribution...
    Ecology, taxonomy, garden use...
    Chemistry…
    Chemistry!
    All parts of the plant are highly poisonous, including the red berries which may be attractive to children. If ingested, even in small amounts, the plant can cause abdominal pain, vomiting, reduced heart rate, blurred vision, drowsiness, red skin rashes and possible death.

    Each word feels like a sharp knife stabbing into my heart. The Quaserians, the sweet scents, the kind old lady... I haven’t even fully realized what has happened before my eyes get blurry. I feel dazed and confused. Then my mind goes blank, as if someone had turned off a switch. Everything fades to black.

    (We have better format at Google Doc)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •