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.


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.


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.
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.
. Also, meteor explosion sound has pitch-based variations now. I hope you like the new version of the game!
In this post, I'll talk about the development of POKKO and how it's received.
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.
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.
Unity 2019, Visual Studio 2017, Aseprite, FL Studio

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.

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.
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.

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
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 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.

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.
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
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.
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.
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."
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.
I am the programmer of the game, also worked on the design. Cemre is a multidisciplinary talent who makes both 3D art and music.
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.
Surely this is not something uncommon in game development, we decided to add some features during the development of the game.
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.
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.
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.
I'll talk about how my Ludum Dare 50 entry, Cursed Unicorn was developed, received and some lessons learned.

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!
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.
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.
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).
- 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.



I will keep developing Cursed Unicorn. I released a post-jam version today.
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!
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.
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.
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!
I submitted my LD52 game (which I worked solo) at a time where I confused Compo and Jam 🥲
A Harvest Story is an interactive experience in which you meet a mysterious stranger in the park in a fall day.

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!
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.
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.
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.
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.
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.
De-Liverance of a God received positive feedbacks so far, despite some undesired behaviours of NPCs.
Using ChatGPT-3.5 for chattable characters has challenges, but it can yield interesting and fun results.
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.