Baby Moses

ArturArtur Posts: 25Member
edited May 10 in Projects

Dear Godot community,

I would like to introduce you to my project, which I have started about 2 weeks before Christmas 2019. It is a little top-down adventure that tells a short story about Baby Moses. You play it from the perspective of his sister who watches over him from a distance to see how he is doing.

The story briefly summarized:


The pharaoh enslaves the Jewish people and has the Israeli male babies killed because the Jews have become too big and therefore too powerful for him. So he wanted to prevent them from growing.

Because Moses' mother could no longer hide her baby, she built a basket made of reeds, pitch and earth resin.
So she put him in the reeds on the bank of the water, but his sister (the player) should see from a distance how he was doing.

When Pharaoh's daughter discovered the baby, she felt Sorry with him. Then Moses' sister comes in and says: "Shall I go and call one of the Hebrew women who is nursing the child?"

So the baby and mother come together again, isn't that a great story? :)

Tasks of the player:

  • Collect reeds,
  • look for earth resin and pitch
  • Sneak past the Egyptian soldiers
  • speak to the residents

tools

I work a lot with Blender to create the pixel graphics
This figure is still a placeholder.

Dear community, this project is still in progress, I am currently learning a lot from it and I am open to suggestions and ideas!


Tags :
«1

Comments

  • cyberealitycybereality Posts: 1,088Moderator

    That's really cute.

  • ArturArtur Posts: 25Member
    edited April 23

    Creation of the tiles

    Here you can see how I dealt with the tiles until I became familiar with them.



    After seeing that it worked well, I went on to the more creative work and developed further the colors and particle system in Blender. (more on this below)


    After the grass, I went one step further and started with the wall, which also includes a collision shape.

    The last picture here shows the current status (03 January 2020)

    I recreated the tiles in Blender, set the camera and animated it so that the camera jumps from tile to tile. So I rendered one tile per frame. In order for the tiles to become seamless, I had to lengthen the shape a bit.

    This picture shows grass that was evenly distributed on the tiles using a particle system.

    Tileset

    I put the individual tiles into a tileset editor together. It was smal editor in the web browser.
    I'm not satisfied with this tool and can't even find the link to it again. So I'm looking for a comfortable tool. I would love to hear your suggestions.

    Joystick on Touchscreen

    It is very important to me that the game works on the smart phone. I definitely had to know whether the controls on the touchscreen is user-friendly.

    It worked well with the mouse, but to test it on the touchscreen I had to export it.

    It was also a success on the touchscreen. These advancements that I made here are fundamental and important for this project. I was very happy that I succeeded.

    Gonkee's tutorial helped me, here is the link.

    Mirjam

    Mirjam is the sister of Moses and is controlled by the player. Like you see here, I've modeled her. next tasks are the colors / materials and the animations.

    Dialog System

    The dialogue system / quest system should play a major role.
    Since I am not a good programmer, this is unfortunately very difficult for me.

    I look forward to your suggestions and maybe a link or two to a helpful source :)

  • cyberealitycybereality Posts: 1,088Moderator

    Nice job.

  • antigravityturtleantigravityturtle Posts: 7Member

    Nice concept. Looks like you have a good start.

    Maybe this could be helpful for a dialog system: https://godotforums.org/discussion/20666/dialogue-designer-and-dialogue-system-for-godot-3

  • ArturArtur Posts: 25Member

    How do you eat an elephant?

    Dear community, I'm currently stuck and overwhelmed.
    Programming is not easy for me, even though I have already gone down to the"Gameboy level". I got stuck in the code and have to take a few steps back. I have to think again about what is really important and how I can achieve it in small, feasible steps. I have restructured my code and the folders. That brings a lot. Next, I would like a comfortable StateMashine for more order and clarity.

    Dialogue System & Dialogue Designer

    I bought it and integrated it into this project. Had little trouble but the developer, radmatt, is very friendly and could help me. Thanks for the suggestion @antigravityturtle

    I believe that if I have installed the DialogueSystem correctly and understand how to use it, I have overcome a hurdle and can finally give my game the depth it needs.

    Wall tiles


    As you can see in the gif, I have the problem that the figure standing behind the wall is not covered. I was considering solving the problem with a shader, but I'm not sure if that's the best way. Maybe one or the other of you has more experience with this. I look forward to hearing from you.

    I have more to tell, but more on that later

  • MegalomaniakMegalomaniak Posts: 3,003Admin

    For the wall tile "problem" you might want to see if the y-sort node can solve it for you.

  • HippoHippo Posts: 137Member

    To solve the wall issue you could split the pillar in half and place each half on separate tilesets. If the top half of the pillar is below the character on the hierarchy then the character will appear behind it, while if the bottom half of the pillar is above the character on the hierarchy then the character will appear in front of it. Hope this helps!

  • ArturArtur Posts: 25Member
    edited January 12

    Thank you @Hippo, I will also think about this possibility :)

    @Megalomaniak thank you for the tip, its a usefull node, but something doesn't seem right. The wall in the tilemap, in the Y-minus area is above the player and everything in the plus area is below the player.

  • jbrooks79jbrooks79 Posts: 2,241Premoderated

    It looks good, reminds me of Yoda, from the Disney . .

  • MegalomaniakMegalomaniak Posts: 3,003Admin
    edited January 12

    @Artur said:
    @Megalomaniak thank you for the tip, its a usefull node, but something doesn't seem right. The wall in the tilemap, in the Y-minus area is above the player and everything in the plus area is below the player.

    Notice that it works according to the objects origins/pivot points. Note sure, but I guess it might not work too well with tilemaps as a result though.

    If your walls weren't tilemaps(say only floors/ground was) it would probably work though.

  • ArturArtur Posts: 25Member
    edited January 17

    Ysort node & Tilemap

    As @Megalomaniak says, it works around object origin. Since I moved the sprite from the player by half (-64/2 = -32) it works. Thank you very much :) Later I adjusted it a little to the position of the feet.

    I would have preferred the tileset to be moved, but unfortunately that was not so easy. Shape offset only moves the first shape, not the entire set.

    i could move the collision shape with a script, which i will try another time. I'm grateful for any little help, especially when it comes to programming :)

    With the help of a shader, a dark area is shown where the character is covered by something.
    So you don't lose the character if it is behind a tree, for example.

    Mirjam


    Here you can see that I have colored the character.
    The first time, she became a blonde girl.
    Usually Jews are not blonde and the blonde hair also emphasizes the character too much.

    It has to be a character that fits the story I want to tell here.
    It should be a poor, inconspicuous girl, the brown hair emphasizes it more

    When I'm not in front of my laptop, of course I have to have at least a sheet of paper and a ballpoint pen with me :) ... then I can use the minute or two to draw.

  • cyberealitycybereality Posts: 1,088Moderator

    Very cool.

  • ArturArtur Posts: 25Member
    edited January 21

    Dialogue System

    On Saturday afternoon Juppi wrote me from the German Godot Discrord Channel.
    It came unexpectedly, because mine request was already one day old and I thought it was lost in the chat process.

    He offered me his help. Smoke rose from our heads, more from his head than mine. After 2 hours of screen broadcasting we finally got it working. It was really very nice of him, I discovered and learned several things. I appreciate his help. Thanks Juppi!

    Everything I have learned so far, I have learned from the community.


    Now it's all about understanding it and cleaning up the code before I can move on to the deeper story.

  • ArturArtur Posts: 25Member
    edited January 30

    In the last few days I have been struggling with websites. If you are dealing with something like that, you don't have much desire to continue the fight with GDScript. Therefore I have continued with the tiles again.

    I rounded off the tiles a bit. They're more organic now, less square.
    I understand the particle system in Blender better now.

    While testing I noticed how important the road is for the visual guidance. As a player, you tend to follow the road, whether with your character or with your eyes. I noticed that it feels awkward when the character hits a wall and is slowed down.

    But a good level design is also necessary to let the player decide whether to go left or right. And if he does run into a dead end, he should at least find a little something in it so that he doesn't regret getting lost.

    Dialogue System

    Unfortunately, the Dialogue System can no longer be seen on the mobile phone. I wonder if it has something to do with the inputmap. I have to bypass the keyboard buttons with touchscreen buttons.

  • dwarfdwarf Posts: 3Member
    edited January 28

    Nice art! Good luck ;)

  • cyberealitycybereality Posts: 1,088Moderator

    Welcome to the forum, @dwarf

  • ArturArtur Posts: 25Member

    NPC with State Mashine

    the npc has a timer that selects a certain direction in the state mahine.
    So the NPC moves in a random direction or he makes a short break. Only that they are still a little blind but the whole picture is already more alive

    In the meantime, I have done small programming exercises, which has improved me.

    I'll keep you informed.

  • ArturArtur Posts: 25Member

    walk cycle

    To make animation easier for me, I have designed a boy. He has no complicated clothes and no long hair.

    his leg gets too long when it goes back, I'll correct it another time.
    The animation is played a bit faster in the game than in the gif here.

    Made the statemashine a bit cleaner and use it to play the new animations.
    Under the feet is a particle system to represent the dust it raises while running.

    I thank you for every thumbs up!

  • ArturArtur Posts: 25Member

    I am taking part in a German game developement showcase and had to create a video for it. I even translated the subtitles into english for you.

    Here are the answers to questions that have arisen through the video:

    • Why don't you make the game in 3D ?
      The characters are sprites, not 3D directly because the game is designed for mobile devices. I hope that I can handle a lot of performance problems with it. Also, I am a better graphic designer than a programmer, so I want to stay in 2D.

    • will there be a quiz on Bible verses?
      No, I don't build in a query of bible verses :) You should learn a lot of the story through dialogues with the people you meet in this adventure.

    • how bible-proof do you have to stay?
      The story will have a biblical thread, only that I take the liberty of decorating it with side quests. I will try not to include elements that don't support the story. I wish that this game would reward the player for doing good.

  • ArturArtur Posts: 25Member
    edited April 3

    Hello dear community, I haven't written here for a long time and unfortunately there are no great pictures today. That is because I have concentrated mainly on programming. I have also learned a lot, which I will explain here roughly. In practice it is a bit more complicated than it sounds here, that's why I needed my time.

    add commit push

    Git secures my progress because I have to experiment a lot before I achieve anything. from now on every step is documented! B)

    Git is a recommendation from a friend of mine who might help me with programming, he has also composed some music for the game.
    I hope we can find the time together to develop Baby Moses further.

    Program Structure

    • Character
      • player
      • npc

    Character is the parent ,and contains the state machine. Player and npc are children and contain their states. The player gets its events through the keyboard, the npc through a timer. For example, the timer determines when the npc should change to the desired state. Through this structure I can split the code so that I store the general properties in character.gd and the specific ones in player.gd or npc.gd

    State Machine

    The state machine contains the states, but also events. The events are triggered by a keystroke on the player or by a timer on the npc.

    These main mechanics and this state machine I got from gdquest the dialogue system from radmatt and hopefully I will put them together soon :)

    story structure

    in building the story i definitely want to tell what the bible says. But I allow myself to include little quests in between and around it. That way the story is not only told, but the player also has something to do.

  • fire7sidefire7side Posts: 87Member
    edited April 3

    Looks interesting. I'm doing a turn based game and have run into these same problems. I haven't gotten to a state machine yet. I am using kind of a decision making tree for the ai using coroutines to wait until something is finished. It's nice that you are respecting the bible and not trying to change it in any way. That always bothers me. Even the smallest detail. Adding some things that could have happened to support the story is all right.

  • DschoonmakerDschoonmaker Posts: 216Member

    This is very interesting, I've never seen a bible based video game!

  • ArturArtur Posts: 25Member
    edited April 18

    Team expansion and Progress

    Kai, the programmer and musician who recommended Git to me, is now actively involved in this project! This is a huge thing for me. We have found time to continue working on the game. His programming skills are much better than mine and he quickly gets the hang of it. we have successfully connected the dialogue system with the state machine. Kai is not only talented, I also hope for an ever growing friendship.

    State Mashine


    The state machine, as I mentioned above in the previous post, caused a problem. If direction keys are not pressed, the event STOP is given in every physic-tic. This brings you into the state IDLE, but this STOP-event blocks the transition to the TALK-state. At least this is how I understood it. That is why we have made the TALK-state accessible from the WALK-state. I hope you understand what I mean.

    Wall-Tiles with Autotile-function

    Now that the functional part is in place, I have returned to the visual side.
    So that all this doesn't look so flat, I want to raise the landscape so that the world gets more depth.

    As you can see in this gif, I create this "building" from several layers. The bottom layer is used to indicate where the walls run when you are in the building. The layers on top are to see the building from the outside, they are hidden when you go inside. This is the idea so far.

    These tiles are not finished. There will be a transition from the wall to the upper level of the landscape.

    It's all a lot of work,
    therefore I am grateful for tips and criticism, because I want to move forward effectively and meaningfully.

  • ArturArtur Posts: 25Member
    edited April 21

    Wall Tiles

    I took a step back and made everything square. This way I could see better that they fit together, and if something was uneven, I could correct it quickly because the square shape is easy to work with. Every little thing is represented by pixels, and because I do pixel art, I have to work very precisely.

    After I had a clean result, I rounded it off with a Subdivision Surface Modifier.

    The walls have a body shadow ( pre-rendered ), but unfortunately no throwing shadow on the floor. Therefore I added a light source.

    Then I realized that strangely enough the walls themselves are not illuminated like in the old "Godot 2D isometric lighting demo".

    In addition, I see that I need a directional light (sunlight) and not a punctual light like a light bulb.
    This thing seems complicated. If you have any advice, let me know what the best way to proceed is.

    Thanks for stopping by, have a great week

  • HippoHippo Posts: 137Member

    I never realized that lighting effects were even possible with a 2D tileset. o.o Thanks for shining some light on this, I might have to mess around with some effects in my games and see what happens.

  • SparrowSparrow Posts: 82Member

    This is great work, really good to see someone else's process. You've stuck with it, welldone.

    The sprites from models is great, I may have to start on that one.

    The lighting issue in your last post is more than likely the layer index, I had the same thing kind of, the light was hitting everything, so I moved the things I didn't want to be effected by the light up to a higher layer index.

    The sunlight thing i can't help with, but using a sprite with a gradient can help smooth out the light.

    Good luck

  • ArturArtur Posts: 25Member

    Thank you very much for your answers and motivating words!
    With the help of a Tutorial by SerenityStyle, which he uploaded the other day, I was able to achieve a good result.

    The short sunlight shadows have to be made with a shader, if this is possible somehow...

  • ArturArtur Posts: 25Member

  • timkrieftimkrief Posts: 11Member

    I really like the artworks, it feels like they are straight from a booklet that would come with the game :)

  • ArturArtur Posts: 25Member
    edited May 9

    Pre-rendered shadows


    In this .gif you see that I am again struggling with light and shadow. I took the animated sprite, duplicated it, set it as a child and colored it gray. Now I see that the shadow does not match the feet coming up on the ground. This should work better for standing objects, but since my objects are 3d, I can simply render the shadow out:
    Without shadow:

    With shadows:

    I did it the same way for the character. The shadow now matches the feet coming up on the ground.

    I like this result already better. But of course it is not realtime shadow. The size of the tile limits the size of the shadow. The material is set to fade out at the edges so that it does not look cut off. Probably I will have problems with YSort, too.

    If you have any tips, suggestions for improvement or just an opinion, I'd love to hear it.
    I wish you a nice weekend!

Sign In or Register to comment.