gord10ahmet

LD 42

Tetris with Physics

I had this idea back in 2008. Unfortunately, another developer had that idea and made its game (Not Tetris 2 is its name). But I still wanted to make my own Tetris with Physics, so here you go.

Gameem1920x1080/em0.png

Gameem1920x1080/em1.png

Ludum Dare 45

I Was Nothing At All is updated

Gameem1920x1080/em2.png I finally found time to update my Ludum Dare entry. It was criticized for being too hard, so I made the game easier. I decreased the time when we are unable to jump and the radius of bombs.

I Was Nothing At All is a platformer with minimalistic graphics and 8-bit music. You start with no abilities, then gain them gradually. There is an enemy that bombs you from the sky, you need to defeat it. You can see the game as a metaphor for defeating our problems when we had nothing at the start.

Ludum Dare entry page

Ludum Dare 46

Protect the Earth v1.1

I updated my entry, listening to some of the advices I took.

Protect the Earth is a game in which you destroy the meteors either by firing rockets or slicing the meteors with your mouse (the game has 2 game modes with these).

Now the rockets are fired automatically in the rocket firing mode.Gameem1920x1080/em0.png. Also, meteor explosion sound has pitch-based variations now. I hope you like the new version of the game!

Game link

Ludum Dare 47

POKKO Post-Mortem

500.png In this post, I'll talk about the development of POKKO and how it's received.

What is POKKO?

POKKO is a short puzzle-platformer game, made by 4 people. You control a boy who is stuck in a Game Boy game. When you collect a Game Boy, a clone of you gets spawned, who repeats your past actions. You need to use him to solve the puzzles.

POKKO is currently played by 1857 players. It's available for WebGL, Windows, Mac, Linux.

How it started?

I'm a member of a Turkish game development community, called ÜNOG. It has a Discord server and channels dedicated to Ludum Dare. I'm a programmer and designer, I was looking for a team of visual artists and musicians. One of POKKO's artists, Deniz Eryılmaz, was also looking for people to work with, he shared his portfolio in ÜNOG's channel and I thought "I must work with him!". Thankfully, he also chose me to work together. He also mentioned his friends who we could work together; another 2D artist (Emir Çetinkaya) and a musician (Kağan Morkoç). I loved their portfolio, too, I am glad that they joined our team.

The tools we used

Unity 2019, Visual Studio 2017, Aseprite, FL Studio

Level 1emEnglish/em1920x1080_0.png

The idea

We had wanted to make a pixel art game. After the theme was announced, we came up with the idea of a boy who is stuck in a Game Boy game. A clone of boy would get summoned when we collected a Game Boy. I offered a time limit to the game after the clone gets summoned, because the computer's (browser's, to be exact) memory could not be sufficient to keep an infinite number of player positions. Also, this time limit could make the game more enjoyable.

What went right:

  • People loved the visuals of the game. I think visuals are the strongest part of POKKO.
  • The visuals and sounds could be completed in time. In fact, there are some sprites and a cutscene that we haven't used in the game. The artists created a cutscene which would play on game over, but I thought it would be annoying if a cutscene played each time we failed.
  • I could program the game good enough to be released as a Ludum Dare game.
  • Clone system works fine. Technical details: Player's positions get stored in a Vector3 list at each fixed update. The clone's position is set to those values in his own fixed update.
  • People liked the twist at the game's end, which fits to the theme of LD47.

vlcsnap-2020-10-05-21h38m54s433.png

What went wrong:

  • There are some problems with the coding of the game. The protagonist can't jump if he's standing on his clone and the clone is jumping, for example. I had made some platform games in the past and used the same techniques, but those games weren't complex enough. I couldn't find time to fix the game's controls even after the jam ended.
  • Apparently the idea of summoning clones is not unique to POKKO. I have seen about 3 Ludum Dare 47 games that use similar mechanics. There is also The Company of Myself.
  • I used Unity's own video system for the cutscene. It didn't work on WebGL and Linux the first time I tried. I had to spend some time on it.
  • I couldn't find time to create more levels, as I was working on making video work in WebGL.
  • Pixel perfect camera caused some problems, the game didn't run correctly on 1366x768 resolution. It turned out that I had to make some settings.

Conclusion

I'm really glad with the game we created. I just wish I could program better platform mechanics. I expect a good rating on Visuals and Audio categories.

POKKO results

This is the best results I get in a Ludum Dare game that I worked on. I'm proud of my teammates, they did a great job especially on visuals.

POKKO results.PNG Level 1emEnglish/em1920x1080_0.png

Ludum Dare 47 entry: https://ldjam.com/events/ludum-dare/47/pokko

Post-mortem: https://ldjam.com/events/ludum-dare/47/pokko/pokko-post-mortem

Ludum Dare 48

Yerlik update: The doors don't block us now

Level 5emTurkish/em1920x1080_0.png One of the feedbacks we received for our Ludum Dare entry, Yerlik, was getting blocked by doors while enemies catch us. It was frustrating. Now that levels are easier, I hope you like them!

Yerlik is a game with new, different mechanics and a twist at the end. We used Anatolian themed motifs, music and mythological creatures. Your purpose is to reach the bottom of a dungeon with 7 levels, while your guardian angel guides you through your journey.

The effect of 2D lighting in Unity

The 2D lighting feature of Unity can impact on how your game looks like. Here are two screenshots from our Ludum Dare entry, Yerlik, with lit and unlit versions.

Unlit.png Lit.png

It was a coincidence that I decided to use 2D lighting. I had forgotten that it existed. Then in a game dev Discord server ("ÜNOG", a Turkish game dev community), I saw someone posting Brackeys's 2D lighting tutorial in his team's Ludum Dare channel. That's when I remembered about Unity's this feature.

Ludum Dare 49

Escape menu for Çiftlik Bar

Game3Dem1920x1080/em0.png I added a simple escape menu for Çiftlik Bar's post-jam version (which is downloadable for Windows) that includes an audio level slider. So that streamers will be able to stream the game better.

This is the game, by the way. Rip your patrons off with ever changing beer prices! https://ldjam.com/events/ludum-dare/49/ciftlik-bar

Linux build for Ciftlik Bar

I have uploaded a Linux build for our game, Çiftlik Bar.

https://www.youtube.com/watch?v=MvjQBBEi4MQ

This is no ordinary bar. The price of the beer changes every 5 seconds. Don’t hesitate to rip the patrons off with high prices, this is a business after all.

But be careful. If they wait for a long time, they will leave the bar. Or they can do worse than leaving the bar.

Çiftlik Bar - Post Mortem

I'd like to talk about how our (me and @Cemre 's) Ludum Dare 49 entry, Çiftlik Bar, was developed and how it was reacted. It's a Unity game. I hope this post mortem will be helpful for other developers.

Game

https://www.youtube.com/watch?v=MvjQBBEi4MQ

"Welcome to your first shift in ÇİFTLİK BAR!

This is no ordinary bar. The price of the beer changes every 5 seconds. Don’t hesitate to rip the patrons off with high prices, this is a business after all.

But be careful. If they wait for a long time, they will leave the bar. Or they can do worse than leaving the bar.

You are fired if no patron is left. Also, we have only 10 glasses of beer, so don’t serve beers when they are cheap.

Good luck! This is a work of luck."

Idea

We are a part of a Turkish game dev community called "ÜNOG". When the theme ("unstable") was announced, we were on the Discord server to discuss what could be done with the theme. Another member, Doğukan Köse, mentioned a bar that exists in real life. The bar worked exactly like Çiftlik Bar, the waiters would put the beer on your table only when the price was high.

There is also an infamous scam in Turkey, "Çiftlik Bank") ("Çiftlik" means "Farm" in Turkish, by the way). The name is a reference to it, considering we are scamming the patrons in the game.

"I must make a game about this", I thought.

Team

I am the programmer of the game, also worked on the design. Cemre is a multidisciplinary talent who makes both 3D art and music.

Development

It was 01:00 AM in Turkey, I was the only team member who was awake. I started a 2D prototype by myself before talking to my teammates, I would sleep at like 05:00 AM, developing the prototype was the best thing to spend my time.

In the morning, Cemre liked the idea. There would be another friend who would join us in the jam, but she said she had made other plans for the weekend. (My fault here was not reminding her there would be Ludum Dare that weekend). I had planned that she would make 2D art and the game would be 2D. But then, we had to make the game 3D.

The prototype was all 2D and top-down. There were a time limit, instead of a beer limit, but I saw that the game wasn't that enjoyable that way. This is a reason why we prototype the games. I had written the codes according to 2D logic, but it wasn't very hard to convert the existing codes to a 3D FPS game.

What went wrong?

Surely this is not something uncommon in game development, we decided to add some features during the development of the game.

ciftlik bar post mortem.JPG For example, the patron model's mouth was not rigged at the beginning, after a while during the development we noticed that they should be smiling or frowning depending on their moods. Rather than getting back to the models, I made their mouth (which was a part of the model) transparent and added a mouth object to the model in Unity. The new mouth object's rotation would be set depending on the patron's mood.

Another difficult was me naming the patrons' tables as "Patron.cs". I hadn't thought that the patrons would be able to leave their tables, so I coded as if the patrons and the tables were combined entries. The class name of the walking creatures are "PatronHuman", which makes the source code look weird. I would refactor the codes if we didn't have a strict time limit.

At some point, I wanted to make the patrons' audio source a single one, so that only one patron would be heard at one time. I tried it, it sounded weird. This made the code look much messier.

I used Unity's nav mesh system for the patrons, who are able to walk to the exit door or chase us. Each time I baked the nav mesh and runned the game, the patrons would start the game at a point different than the chairs they were sitting on. That made me lose quite a time to fix their position. Also, if the patrons chase us and we are in the barstools (they don't have collider to make the game easier), they are not able to chase us. This is a bug I couldn't solve.

I wanted to add a global highscore table in the 3rd day. I found a tutorial about that. I spent hours to be able to connect the database I created in my website to Unity, but failed. That's something I really wanted to be able to do.

Reception

People enjoyed the game in general (though, I wish it became a hit like some of my past Ludum Dare entries). I believe that we made a fun game.

People mostly complained that they are unable to tell when a customer would leave the bar. I had wanted the players to take risks, that was a design pillar. But apparently, the players would enjoy the game more without that pillar. Honestly, not many people testes the game before the release, I wish we had seen that design pillar problem earlier.

Conclusion

You might see that you need new features while developing the game. You must be ready for that.

It's good to make people test the game before the release, so you can see that some things you see as enjoyable might not be for other people.

Ludum Dare 50

Cursed Unicorn Post Mortem

I'll talk about how my Ludum Dare 50 entry, Cursed Unicorn was developed, received and some lessons learned.

Game

ezgif-1-df616278d7.gif

Cursed Unicorn is a compo game that's inspired from Vampire Survivors, but differs from it with side scrolling and flying mechanic.

Your objective is to protect the baby unicorn from evil spirits as long as you can. You fire projectiles at the enemies automatically. Each time you level up, you can either increase the attack speed or heal the unicorn. Oh, and you can fly!

Birth of idea

I'm a fan of Vampire Survivors and have been wanting to make a game with the same genre since I played it. It seems that I'm not the only LD participant who wanted that. In fact, I believe that this theme was chosen due to this, lol.

I'm also in a sad term in my life due to something I'd rather not talk about publicly. This game is a metaphor of what has been happening. I reflected the sorrow to the art.

Development

I did everything (except for fonts) and finished the game 10 hours before the deadline. I think I rushed the release too much. There are only two upgrade options at level up, Heal and Faster Attack. The main reason why I didn't add other upgrades was that I couldn't find any original and interesting upgrades. Honestly, I was afraid I would be accused of ripping VS if there were too many similarities.

This is a Unity game. I used to use FindObjectOfType too much before. Of course not in Update, but in Awake to cache the references to other scripts. I started to think this is a bad practice. In this game, I started to use static instances for communication between scripts. It went well.

Most of the development time passed with trying to balance the game.

Reception

Even though I tried not to copy from VS too much, I was still afraid of being accused of ripping it off. That didn't happen, many people liked the game. The others didn't like it mostly because of the lacking features I didn't develop. It currently has 335 browser plays and 23 ratings (I strongly suggest r/WebGames to find people to play your web games).

  • There were too few upgrades. Only 2.
  • If you play the game well enough, it can last till you get bored. I was thinking of putting a creepy, invincible enemy at 05:00, but didn't put it.
  • Some people found the game too easy, some found it too hard
  • I forgot to make walking animation, lol, but it didn't bother people it seems
  • Something that makes VS addicting is to mass kill enemies. We don't have that in Cursed Unicorn

Gameem1920x1080/em0.png - I should have made the characters smaller, like in the above screenshot. People complained that getting stuck in air by enemies wasn't fun.

Overall, I wish I had added those features I mentioned in the article, rather than being afraid of getting called a rip off. There is a reason why those features exist in a game which reached 77,061 concurred players.

New version for Cursed Unicorn

Gameem1920x1080/em9.png

Story1em1920x1080/em0.png

Story2em1920x1080/em1.png

I will keep developing Cursed Unicorn. I released a post-jam version today.

  • There is a 7 minute time limit. You "win" the game after surviving for this long. Let me not spoil what happens after 7 minutes.
  • Game area is much wider and higher.
  • Better story visuals
  • Game is re-balanced, including health upgrade's healt increase.

TO-DO: - More upgrades

Game:

Cursed Unicorn is a Ludum Dare game that’s inspired from Vampire Survivors, but differs from it with side scrolling and flying mechanic.

Your objective is to protect the baby unicorn from evil spirits as long as you can. You fire projectiles at the enemies automatically. Each time you level up, you can either increase the attack speed or heal the unicorn. Oh, and you can fly!

Cursed Unicorn Update

ezgif-4-68882a3a33.gif Linux support is brought with this post-jam update of Cursed Unicorn. I don't have a Steam Deck, but I believe the game will run on it, as full gamepad support exists in this version, too. Would be glad if someone could try it.

  • Linux support (Possibly works in Steam Deck, too)
  • Better gamepad vibration
  • Pause menu
  • Bug fix: "Death" is always visible when he spawns at the end of the game
  • Better aiming for Witch. The comparison happens between the bullet spawn point and enemy now, rather than Witch's feet and enemies

The WebGL version shows you the first version of the game, instead of the post-jam. You need to download the game to play the updates. The WebGL version will be replaced with the post-jam version after the voting ends.

Ludum Dare 51

Mac build for my game, because it can't run on Safari

Gameem1920x1080/em3.png I've just uploaded a Mac (Intel + Silicon) build for my LD51 game, Ten Seconds A Demon. I noticed that Safari couldn't open the WebGL build of the game (I used Unity, by the way). Firefox can open the game on Mac, but I thought many people in Mac only used Safari, so that was an important consideration.

It's kind of disappointing for me, because I think a point of WebGL is being able to not care about platform differences.

As for the game,

In 1988, 13 scientists accidentally summoned a demon in the Arctic. You are that demon. You possess a random scientist every 10 seconds. Unleash your wrath upon the mankind!

Ludum Dare 52

Ukranian translation for A Harvest Story

ukranian.jpg

My Ludum Dare 52 game (or should I say "interactive experience"), A Harvest Story, is translated to Ukranian by Oleksii Maksymenko. This is my first game ever that was translated to Ukranian.

A Harvest Story is a short interactive experience in which you meet a mysterious stranger in a park in an autumn day. It has Commodore 64 aesthetics, it's a WebGL game.

This is an entry for Ludum Dare 52 which I worked solo. Unfortunately, there is no music. This is an interactive story, rather than a game.

I hope this post gets noticed among the spam here!

Ludum Dare 53

Deliver the Liver

An idea of mine is to play as an eagle who brings a liver to Prometheus everyday, because Prometheus's liver doesn't regenerate. I couldn't find a good gameplay mechanic for that idea, but here is a little poem:

To satisfy Olympus's ruler

You will deliver the liver

So Prometheus will suffer

And this will be forever

Feel free to use this idea and poem, if they give you a solid gameplay idea.

A game that uses ChatGPT-powered NPCs

Gameem1920x1080/em0.png AI will be a part of the future. I had the idea of venturing into developing games where you can actually chat with ChatGPT powered NPCs. I used this Ludum Dare as an opportunity to make a small, experimental game with this idea. Here is this little experiment: De-Liverance of a God!

(It seems like I can't give links here, I guess because of spam protection, but you can see it from my profile)

As the eagle whose duty is to eat Prometheus’ liver every day, you see how unjust his punishment is. Can you persuade Zeus, the king of gods, to set Prometheus free?

I couldn't manage establishing a connection between a WebGL build and a server I use. So the game can only be downloaded, unfortunately. Windows, macOS (Intel + Silicon), Linux are supported. Unity 2021 is used.

A chat based experimental game with ChatGPT-3.5 NPCs (Post-Mortem

I'm an indie game developer who likes making experimental games (Clown House was one of them). My belief is AI will be an important part of the future, one of my plans is to venture into the world of AI-powered games. So I wanted to have some experience and made a small Ludum Dare game whose focus is having conversations with smart NPCs. I'll talk about some technical challenges I faced during making De-Liverance of a God.

GAME

The theme of Ludum Dare 53 was "Delivery". The strongest idea I had was the "de-liver" pun, which led me to the famous tale of Prometheus. I had already learned how to use that "Chat GPT For Games - AI Integration" asset and prepared my server where I keep my API key before jam began.

As the eagle whose duty is to eat Prometheus’ liver every day, you see how unjust his punishment is. Can you persuade Zeus, the king of gods, to set Prometheus free?

You set Prometheus free after learning a magic number from Zeus.

https://ldjam.com/events/ludum-dare/53/de-liverance-of-a-god

I used Unity 2021 and "Chat GPT For Games - AI Integration" asset. Game is downloadable for Windows, macOS (Intel + Silicon), Linux. No WebGL build, unfortunately.

A prompt example is:

Answer as Prometheus, god of fire. You are being tortured by Zeus. I am the eagle who eats your liver. You know who I am. You hate me. You are in agony. We are in Olympus. You know Zeus might stop torturing you if I persuade him. You are bound to a rock. There is a magic number that can set you free. Only Zeus knows the magic number. Do not ask me who I am. Do not write explanations on replies. Answer in the language as me. Keep your answers shorter.

All prompts I used in the game are available as bonus content in Itch page.

CHALLENGES

  • Protecting the API key

    OpenAI gives you an API key for your product to get connected to ChatGPT. Even though it's technically possible to store that API key in your game, this makes the key prone to be stolen if your game is reverse engineered. So it's best to host a server that keeps the key and establish the connection between player and OpenAI. The asset I bought comes with a Node.JS script for that. So there should be a member in your team that knows how to set servers.

    I managed running that Node.JS script in a server I rented. The standalone clients can connect to it perfectly, but I still couldn't make WebGL builds connect to it. That's why there is no a WebGL build, which is a shame.

  • Unpredictability

    This is both about players and AI.

    It's impossible to predict everything players can say in a game where they can type whatever they want. A player can say that he is a strong god from another pantheon and threaten Zeus of an invasion to learn the magic number (this happened).

And my experience with ChatGPT-3.5 is, sometimes it ignores or misinterprets parts of your prompt. Like Heracles can think he is the eagle who eats Prometheus' liver. This kind of misinterpretations happen rarely, but you know, a rare bug is way worse than a persistent bug. Maybe there was something I did wrong, I don't know.

  • Trigger events

    You probably want Unity (or whatever engine you use) to understand something certain happened while talking with an NPC. Like Zeus' decision to set Prometheus free. It seems like the only communication between ChatGPT-3.5 and Unity is "chat". You can't define an event like "ZeusSetsPrometheusFree()".

    My initial idea was making NPCs put a certain phrase (like "XYZ") at the end of their replies when something certain happened. The text shown to player wouldn't show "XYZ", but my script would understand it. Unfortunately, sometimes AI would ignore my prompt and not put that "XYZ" phrase, breaking the game. Result of unpredictability.

    My solution was to make this certain phase a magic number. Game understands if Zeus and you say that number and this triggers the necessary function in game.

RECEPTION

De-Liverance of a God received positive feedbacks so far, despite some undesired behaviours of NPCs.

CONCLUSION

Using ChatGPT-3.5 for chattable characters has challenges, but it can yield interesting and fun results.

GPT-4 upgrade for my previous experimental Ludum Dare entry

Gameem1920x1080/em1.png De-Liverance of a God is an experimental game in which you can talk with ChatGPT powered NPCs.

As the eagle whose duty is to eat Prometheus' liver every day, you see how unjust his punishment is. Can you persuade Zeus, the king of gods, to set Prometheus free?

It was using GPT-3.5 in jam version, I updated the game to use GPT-4. I expect the NPCs will be smarter with this update.

WebGL support will come once I solve some server-side technical problems. I'm open for collaborating with talented pixel artists and musicians.

I'm open for collaborating with talented pixel artists and musicians.

You can download the game from Itch for Windows, Mac and Linux.