Fatih Cil https://www.fatihcil.com Sat, 20 Jul 2024 19:13:03 +0000 en-US hourly 1 https://wordpress.org/?v=7.0 https://www.fatihcil.com/wp-content/uploads/2023/01/cropped-fatihsiteicon2-32x32.png Fatih Cil https://www.fatihcil.com 32 32 How did I start my game developer career? / EN https://www.fatihcil.com/how-i-started-my-game-developer-career-en/ https://www.fatihcil.com/how-i-started-my-game-developer-career-en/#respond Wed, 03 Apr 2024 19:14:54 +0000 https://www.fatihcil.com/?p=712

I started my software education in high school, but I would like to share an old memory to explain the game developer in me. When I was little, I think I was in middle school, I was interested in game developers. While talking about the bugs in Pes (a football game) with friends on the street, I made a funny and childish claim like “If I knew how to do it, I would do it better and better quality”. Of course, I had no idea about software at that time.

Then I started M.K.Coşkun Oz High School. In the 9th grade, I bought a book about the Java programming language and started to learn software on my own. I was very excited when I wrote my first “Hello World” programme. Then I started the Computer Systems Department in High School. In the 11th grade, I developed my own game called “CountryBall Wars” in my spare time while doing an internship. This game achieved an unexpected success by receiving hundreds of thousands of downloads and took me further in the software world.

In 12th grade, my teacher and I developed an assistant project for the visually impaired and participated in the TUBITAK competition. This project involved an assistant that works on mobile devices and provides support to visually impaired individuals. Although our TUBITAK project, unfortunately, did not get a degree, but this experience taught me a lot.
Now I had to start preparing for university. When I was in the last semester of 12th grade, I looked at the courses of different schools in Turkey and abroad, compared them and decided. I realised that the cost of studying at Warsaw Technical University would be almost the same as a university in Turkey. For this, I had started practicing foreign languages, but with the COVID-19 pandemic, I cancelled this plan and decided to improve myself by taking online courses. However, in the meantime, I made perhaps the biggest mistake of my life. Even if you spend all your time learning something, it is almost useless unless you put what you have learned into practice and it is gradually forgotten. Since I was curious about all areas and a little greedy, I exploited all the resources I could find (Cisco Academy, Coursera, Bitwise, Udemy, etc…). It was important to learn the information, but it was even more important to make projects that would show that I knew them. With my current mind, I wish I had kept the trainings as a start and spent most of my time doing projects. However, experience is experience.

Then I started to learn game development with C++ through an online course. I had decided that I was going to progress in the game industry and I was looking for deeper knowledge to develop it. At this point, a friend of mine told me about Ecole 42 and said that it was exactly my idea. Spoiler: In the end, he was not wrong 🙂

I can say that one of my biggest mistakes in my software adventure, which I studied for so many years, was being asocial and not reaching enough network. Even if you know everything, as long as you are not in the right place, unfortunately, the doors may not open to you as you want. This is the reality of life.
When I first heard about Ecole 42, I thought it was a simple project, but when I researched a little more, I was very interested and I felt lucky to have such a project in Turkiye.

Firstly, I passed the online test and started the 1-month Piscine period. I met interesting people during the pool period and maybe for the first time in my life, I communicated with so many people at once. I learned a lot and taught a lot.
After completing the Piscine period, we started the long-term Common core, where the most beautiful thing was to experience almost all areas from the most basic. Together with various projects, we did various projects in system administration, game development, web development, etc. Due to the school system, I could express myself much more easily and transfer what I knew to the other side more easily.

While I was still in Common Core education, I wanted to participate in a mobile game event called Mobidictum, and I went to this event with Ayberk, who I met at school, later my roommate and now my colleague. We got in touch with many people there and introduced ourselves. We were lucky to meet Panteon, one of the leading game companies in Turkey, and they were impressed by both of our backgrounds and software careers. When Common Core was over at our school, we moved to Ankara and started working on a very nice project there.

And Erdoğan, another friend of mine from Ecole42, came to us after finishing his internship. Now the three of us are working together on a very nice project at Panteon 🙂

]]>
https://www.fatihcil.com/how-i-started-my-game-developer-career-en/feed/ 0
Yazılım Kariyerime Nasıl Başladım? / TR https://www.fatihcil.com/yazilim-kariyerime-nasil-basladim/ https://www.fatihcil.com/yazilim-kariyerime-nasil-basladim/#respond Wed, 03 Apr 2024 19:03:13 +0000 https://www.fatihcil.com/?p=705

Yazılım eğitimime lisede başladım ancak içimdeki oyun geliştiricisini anlatmak için eski bir anıyı paylaşmak isterim. Küçükken, sanırım ortaokuldayken oyun geliştiricilerine merak saldım. Sokakta arkadaşlar ile Pes (bir futbol oyunu) oyunundaki hatalardan bahsederken “Ben nasıl yapılacağını bilsem daha iyi ve daha kaliteli yaparım.” gibi komik ve çocukça bir iddiada bulunmuştum. Tabii o zamanlar yazılım hakkında hiçbir fikrim yoktu.

Ardından M.K.Coşkun Öz lisesine başladım. 9. sınıfta Java programlama dili hakkında bir kitap alarak kendi kendime yazılım öğrenmeye başladım. İlk “Hello World” programımı yazdığımda büyük bir heyecan duydum. Ardından Lisede Anadolu Teknik Bilişim bölümüne başladım. 11. sınıfta staj yaparken boş zamanlarımda “CountryBall Wars” adında kendi oyunumu geliştirdim. Bu oyun, yüzbinlerce indirme alarak beklenmedik bir başarı elde etti ve beni yazılım dünyasında daha da ileriye taşıdı.

Sonrasında yazılımın farklı alanlarına merak saldım ve yapay zeka, mobil uygulama geliştirme gibi konulara ilgi duydum. 12. sınıfta öğretmenimle birlikte Görme Engelliler için bir asistan projesi geliştirdik ve Tübitak yarışmasına katıldık. Bu proje, mobil cihazlar üzerinde çalışan ve görme engelli bireylere destek sağlayan bir asistanı içeriyordu. Tübitak projemizde, ne yazık ki, derece almasa da bu deneyim bana çok şey öğretti.

Artık üniversite hazırlıklarına başlamam gerekiyordu. 12. sınıfın son dönemindeyken Türkiye ve yurtdışındaki farklı okulların derslerine baktım, karşılaştırdım ve karar verdim. Varşova Teknik Üniversitesi’nde eğitim almanın maliyetinin Türkiye’deki bir üniversiteyle neredeyse aynı olacağını fark ettim. Bunun için yabancı dil alıştırmalarına başlamıştım ki COVID-19 salgını ile birlikte bu planımı iptal ettim ve online kurslar alarak kendimi geliştirmeye karar verdim. Ancak bu esnada hayatımın belki de en büyük hatasını yaptım. Zamanınızın tümünü bir şeyler öğrenmeye harcasanız bile bu öğrendiklerinizi uygulamaya geçirmediğiniz sürece neredeyse hiçbir faydası olmuyor ve yavaş yavaş unutuluyor. Tüm alanları merak ettiğimden ve biraz da aç gözlü olduğumdan bulabildiğim tüm kaynakları (Cisco Academy, Coursera, Bitwise, Udemy, vb…) sömürdüm. Bilgiyi öğrenmek önemliydi, ancak onları bildiğimi gösterecek projeler yapmak daha da önemliydi. Şimdiki aklım ile eğitimleri başlangıç olarak tutup zamanımın büyük bir kısmını projeler yaparak harcasaydım diyorum. Ancak tecrübe tecrübedir.

Daha sonra bir online kurs aracılığıyla C++ ile oyun geliştirme öğrenmeye başladım. Artık oyun sektöründe ilerleyeceğime karar vermiştim ve bunu geliştirmek için daha derin bilgiler arayışındaydım. Bu noktada bir arkadaşım bana Ecole 42’den bahsetti ve fikir olarak tam benlik olduğunu söyledi. Spoiler: Sonunda pek de haksız çıkmadı 🙂

Bunca yıllık eğitim aldığım yazılım serüvenimde en büyük hatalarımdan biri de asosyal olmak ve yeterli networke ulaşamamaktı diyebilirim. Her şeyi bilseniz dahi doğru yerde olmadığınız sürece ne yazık ki kapılar size istediğiniz gibi açılamayabiliyor. Hayatın gerçeği bu.

Ecole 42′ yi ilk duyduğumda basit bir proje gibi düşünmüştüm ancak biraz daha araştırdığımda oldukça fazla ilgimi çekti ve böyle bir proje Türkiye’de olduğu için kendimi şanslı hissettim. İlk olarak online testi geçtim ve 1 aylık Piscine dönemine başladım. Havuz döneminde ilginç insanlar tanıdım ve hayatımda belki de ilk defa bir anda bu kadar insan ile iletişime geçtim. Hem birçok şey öğrendim hem de birçok şey öğrettim.
Piscine dönemini tamamladıktan sonra uzun soluklu Common core’a başladık burada aslında en güzel şey neredeyse tüm alanları en temelden deneyimlemek oldu. Çeşitli projeler ile birlikte sistem yönetimi, oyun geliştirme, web geliştirme, vb. alanlarda çeşit çeşit projeler yaptık. Okulun sisteminden dolayı artık kendimi çok daha rahat ifade edebiliyor ve bildiğim şeyleri karşı tarafa daha rahat aktarabiliyordum.

Henüz Common Core eğitimindeyken Mobidictum adlı bir mobil oyun etkinliğine katılmak istedim ve okulda tanıştığım sonradan ev arkadaşım, şimdi de iş arkadaşım olan Ayberk ile birlikte bu etkinliğe gittik. Orada bir çok insan ile iletişime geçtik, kendimizi tanıttık. Orada şanslıydık ki Türkiye’nin sayılı oyun şirketlerinden biri olan Panteon ile de tanıştık. Her ikimizin geçmişinden ve yazılım kariyerinden etkilendiler. Okulumuzda Common Core bitince Ankara’ya taşınıp orada çok güzel bir projede çalışmaya başladık.

Ve Ecole Den başka bir arkadaşım olan Erdoğan da staj eğitimini bitirdikten sonra yanımıza geldi. Şimdi üçümüz birlikte Panteon’da çok güzel bir proje üzerinde çalışıyoruz 🙂 

]]>
https://www.fatihcil.com/yazilim-kariyerime-nasil-basladim/feed/ 0
Creating a 2D Strategy Game with Unity: A Journey into CountryBall World https://www.fatihcil.com/creating-a-2d-strategy-game-with-unity-a-journey-into-countryball-world/ https://www.fatihcil.com/creating-a-2d-strategy-game-with-unity-a-journey-into-countryball-world/#respond Mon, 25 Sep 2023 19:47:51 +0000 https://www.fatihcil.com/?p=675

In the realm of game development, the creation of a strategy game can be a daunting yet incredibly rewarding endeavor. It involves a careful blend of design concepts, coding techniques, and creative assets to bring a world to life. In this blog post, we’ll delve into the making of a 2D strategy game using Unity 2021 LTS, featuring a playful CountryBall theme.

The Concept

Our game draws inspiration from classic strategy games like Age of Empires. The goal is to create a seamless gaming experience with the following core features:

Building Production: Players can construct various types of buildings, each with its own unique purpose and appearance.

Unit Production: Barracks can produce different types of soldier units, each with varying health and attack attributes.

Unit Movement: Players can command their units to move to designated areas on the map using the shortest path.

Information Screen: Selecting a building displays its image and available unit production options.

Health Points: Buildings and units have health points (HP), and they get destroyed when their HP reaches zero.

Optimization: Utilize batching and instancing to minimize draw calls and improve performance.

Design Principles

To create a maintainable and extensible game, we’ve embraced key design principles:

Object-Oriented Programming (OOP): We’ve structured our code using OOP concepts, implementing inheritance and polymorphism where needed.

SOLID Principles: Our code adheres to SOLID principles for better modularity and ease of maintenance.

Design Patterns: We’ve applied the Factory and Singleton design patterns where appropriate to streamline object creation and manage global game state.

UI-Logic Separation: We’ve separated the user interface (UI) and game logic using the Model-View-Controller (MVC) architecture for clarity and maintainability.

Coding Techniques

Our game incorporates various coding techniques and Unity features:

Object Pooling: To efficiently manage the instantiation and recycling of game objects.

Coroutines: Used for tasks like unit movement and timed events.

Events: To handle interactions and trigger actions in response to player input.

Algorithm: Pathfinding with A*

To achieve smooth unit movement, we’ve implemented the A* pathfinding algorithm. This algorithm calculates the shortest path from the starting point to the destination, ensuring that units navigate around obstacles and reach their target efficiently.

Conclusion

Creating a 2D strategy game in Unity is a challenging but rewarding endeavor. By combining design principles, coding techniques, and creative assets, we’ve embarked on a journey into the CountryBall world. Our game features building construction, unit production, unit movement, and responsive design, all while adhering to best practices in game development. With a dash of strategy and a pinch of creativity, we’ve brought this vibrant world to life for players to enjoy. You can access to codes from this link.
Thanks for reading my post 🙂 Bye!

]]>
https://www.fatihcil.com/creating-a-2d-strategy-game-with-unity-a-journey-into-countryball-world/feed/ 0
Cub3d https://www.fatihcil.com/cub3d/ https://www.fatihcil.com/cub3d/#respond Fri, 30 Sep 2022 09:48:00 +0000 https://www.fatihcil.com/?p=574

Introduction:

You can access to project codes on Github

The Cub3D project is a 3D game project that is part of the curriculum for the 42 coding school. It’s
 inspired by the classic first-person shooter game Wolfenstein 3D, is an excellent way to learn and practice computer graphics programming, specifically ray-casting. In this blog post, we will provide a step-by-step guide on how to develop your own cub3D project using the C programming language and the miniLibX library.

You can access the project topic here

Step 1: Setting Up Your Environment

First, ensure you have a compatible development environment.
You will need:

  • A C compiler, such as GCC
  • The miniLibX library, which can be downloaded from the 42 school’s website
Step 2: Understanding the Basics of Ray-Casting

Ray-casting is a technique used to create a 3D perspective in a 2D environment. It involves casting rays from the player’s position to the walls and calculating the distance to them. The distance to the walls is then used to determine their height on the screen. Familiarize yourself with this concept before proceeding.

Step 3: Creating the Game Loop

Start by setting up a game loop that will handle rendering and user input. The loop should consist of the following steps:

  • Handle user input (e.g., moving forward, backward, turning left or right)
  • Update the player’s position and direction
  • Clear the screen
  • Perform ray-casting to render the scene
  • Update the screen with the rendered scene
Step 4: Handling User Input

Using the miniLibX library, set up event-driven programming to handle keyboard input for player movement and interaction. Typical key bindings include W, A, S, and D for forward, left, back, and right movements, and arrow keys for rotating the view.

Step 5: Implementing Ray-Casting

Implement the ray-casting algorithm by following these steps:
Calculate the initial ray direction for each vertical column on the screen.

  • Determine which grid cell the ray intersects first.
  • Traverse the grid cells using DDA (Digital Differential Analysis) algorithm until a wall is hit.
  • Calculate the distance from the player to the wall.
  • Determine the wall height on the screen based on this distance.
Step 6: Adding Textures and Sprites

To enhance the visual appeal of your cub3D project, apply textures to the walls and add sprites for objects and enemies. Load textures using miniLibX and map them to the walls during the ray-casting process. For sprites, calculate their position relative to the player, sort them by distance, and render them on the screen.

Conclusion:

Developing the Cub3D project is a great way to learn about game development and graphics programming. By following these steps, you can create a basic 3D game engine that is capable of rendering textured walls, sprites, and a simple game world. While the project may seem challenging at first, with some patience and dedication, you can develop a functional game engine that you can be proud of.

]]>
https://www.fatihcil.com/cub3d/feed/ 0
Fractals: A Journey with Fract-ol https://www.fatihcil.com/fractals-a-journey-with-fract-ol/ https://www.fatihcil.com/fractals-a-journey-with-fract-ol/#respond Mon, 30 May 2022 13:31:00 +0000 https://www.fatihcil.com/?p=660

Introduction

You can access the code on Github

  Welcome to my blog! In this post, I want to share my experience developing the Fract-ol project during my time at École 42. Fract-ol is an exciting and visually stunning project that allowed me to dive deep into the world of fractals using the power of C programming language and the Minilibx library.

Understanding Fractals

  Fractals are fascinating mathematical structures that exhibit self-similarity at different scales. They are created through a process called iteration, where a mathematical formula is repeatedly applied to generate intricate and complex patterns. Fractals can be found in nature, architecture, and art, and exploring them can be a captivating and enlightening experience.

Setting The Foundation

  To embark on this project, I began by studying the fundamentals of fractals, their equations, and the algorithms used to render them. It was crucial to gain a solid understanding of concepts like the Mandelbrot set and the Julia set, as they are the building blocks of our project. Additionally, I familiarized myself with the C programming language and the Minilibx library, which provides a primary graphic user interface for rendering images.

Creating The UI

   The first step was to develop a user interface that would allow users to interact with the fractals. I utilized the Minilibx library to create a window where users could explore and navigate the fractal space. I implemented keyboard and mouse input handlers to enable zooming, panning, and adjusting parameters such as color schemes and iterations.

Rendering The Fractals

   To render the fractals, I implemented various algorithms, such as the Escape Time Algorithm and the Continuous Potential Algorithm. These algorithms iterate over each pixel in the display window and calculate the corresponding fractal value based on its coordinates. This value is then used to determine the color of the pixel, creating the intricate patterns that define fractals.

Implementing Zoom And Navigation

   One of the most exciting aspects of Fract-ol is the ability to zoom into the fractal space and explore the intricate details. I implemented zoom functionality by allowing users to click and drag a specific area of interest. This process involved recalculating the coordinates and iterations for the new zoomed-in area, providing a seamless and immersive experience.

Conclusion

   Developing the Fract-ol project was an exhilarating journey that allowed me to explore the fascinating world of fractals while sharpening my programming skills. It provided a unique blend of mathematical concepts, graphical programming, and user interaction, resulting in a visually stunning and immersive experience. Through this project, I gained a deeper appreciation for the beauty and complexity of fractals and learned how to translate mathematical concepts into captivating visuals. As a result, I implemented the algorithms of Mendelbrot, Julia and Multibrot fractals into my project and got to know that magical world closely 🙂

]]>
https://www.fatihcil.com/fractals-a-journey-with-fract-ol/feed/ 0
42 Piscine: A Challenging But Rewarding Experience https://www.fatihcil.com/42-piscine-a-challenging-but-rewarding-experience/ https://www.fatihcil.com/42-piscine-a-challenging-but-rewarding-experience/#respond Fri, 07 Jan 2022 19:43:00 +0000 https://www.fatihcil.com/?p=510

Hey guys, have you ever heard of 42 piscine? Basically, it’s a four-week programming Bootcamp from hell that serves as the admissions process to the 42 École programming schools.

Piscine is designed to test your coding skills, your ability to collaborate with others, and your general sanity. You are given a series of programming challenges and projects to complete with very little guidance or instruction. And you are expected to do it all in a limited time.

But despite all the craziness, it was an enriching experience. Of course, I learned a lot about coding, but I also learned a lot about myself. I discovered I had much more courage and determination than I thought possible. I also learned how to communicate effectively with others and how to work in a team. And let’s remember the invaluable skill of surviving on very little sleep!

One of the best things about Piscine was the community. I’ve met many great people who are just as passionate about coding as I am. We all supported and helped each other. It was a great environment to be a part of, and I made some great friends along the way.

In the end, I successfully completed the piscine and was invited to continue my studies at 42 École. It was a proud moment for me, and I felt grateful for the experience that I had gone through. The piscine had tested me in ways I never thought possible, and I emerged more assertive and more determined.

In conclusion, the 42 piscine is an incredible opportunity for anyone passionate about coding. It is a challenging and demanding experience, but it is also gratifying. Suppose you are willing to work hard and persevere. In that case, you will gain invaluable skills and knowledge that will serve you well in your future career as a programmer. If you are up for the challenge, I highly recommend that you give the 42 piscine a try!

]]>
https://www.fatihcil.com/42-piscine-a-challenging-but-rewarding-experience/feed/ 0
Beginning of the Road! https://www.fatihcil.com/hello-world/ https://www.fatihcil.com/hello-world/#comments Mon, 15 Jun 2020 00:17:00 +0000 https://www.fatihcil.com/?p=1

Welcome to my blog! Here, I will be sharing my projects and general ideas on a variety of topics. From programming to philosophy, I have a range of interests that I can’t wait to explore with you. This blog is a space where I can express myself and share my knowledge with others. I hope you’ll join me on this journey of creativity and discovery

 

]]>
https://www.fatihcil.com/hello-world/feed/ 1