Introduction – What is it all about

Tags: GameDev, 3D Engine, Cross-Platform, C++, OpenGL ES 3.2, Low-Level Programming, Software Foundation


This blog has evolved into a practical, step-by-step guide on writing a cross-platform 3D app (game) from scratch.

Writing own game is my old dream. Now, I finally know how to do it right.

Have a few ideas in mind what it could be, haven’t decided yet. Maybe something like this?:

or this:

Or even better?

Anyway, whatever the final result may be, a significant part of the journey is common to any project. I am inviting you to join me on this path. The purpose of these notes is to build a practically usable foundation for a real commercial project, starting from nothing.

Ready? Then let’s go! But where? Let’s pick direction first.


Platform: Android, iOS, PC, Mac, Xbox—where to begin? Instead of choosing one, I wanted to try cross-platform. To start, I am planning to focus on Windows and Android. If such combination (desktop + mobile) will work, the other platforms will follow by analogy.


Graphics engine & API: I am wary of binding myself to existing game engine frameworks. “Easy ways” are seldom as easy as they claim, always carry their own built-in destinations and intentions, not necessarily matching yours, and create more problems than they solve when you don’t follow the path (template) precisely.

Besides, I want to avoid bloating the project with “megatons” of extra layers.

Therefore, I won’t consider for myself such high-level options as Unity, Unreal, GameMaker, or Godot.

Instead, I would prefer low-level access to 3D. Plus, it must be cross-platform-compatible. The choices seem vast: DirectX, OpenGL, Vulkan, Metal—did I miss anything? In practice, almost none of them are truly cross-platform except OpenGL ES, which runs on practically any platform, including PC, Android, Mac, and iOS. I will be using the low-level API OpenGL ES 3.2.


Programming language: C++, Java, C#, Objective-C, Kotlin, Python, Rust, Swift… the list goes on. But again, our cross-platform requirement leaves us with a single classic undisputed option: C++.


IDE:

For Windows we will use Microsoft Visual Studio Community edition, which is free.

For Android – Google Android Studio, which is free as well.


The challenge with this combo (C++ and OpenGL ES) is that it isn’t “native” to any one platform. Each environment requires specific effort to make this duo work. However, this is still better than limiting yourself to a single platform, no matter how promising it may seem.

Now, when we know where we are going, LET’S START! Let’s see how far YOU can go 🙂


Spoiler: It actually worked out. You can see the results here:


Leave a Reply

Your email address will not be published. Required fields are marked *