Tuesday 12 February 2013

A Quick Introduction to KGLT

Those of you that follow me on Twitter, or have the pleasure to listen to my waffling in person, will know that I'm working on a game engine - although I'm still not convinced that's the right terminology. Let's call it a "game framework".

There's a well known saying in the game development world, it goes like this: "Write games, not engines". And, it's actually really good advice, there are plenty of game engines out there, many of them open source and free to use commercially. On top of that, writing a game engine is hard, really hard. It probably is the most difficult user-space application that you can write, and only the insane or brilliant even attempt it.

I must be insane.

Now that I've painted a clear picture of why writing a game engine is an extraordinarily bad idea, let me explain why that's pretty much exactly what I'm doing.

Every so often I grab an old PC game from my shelf, shove it in the DVD drive and prod around the folder tree. If I find something that looks like it could be a new texture format, or model format, I can't resist firing up a Hex editor and trying to decipher it. I've had some moderate success too. I successfully reverse engineered the Ignition texture format for example. And it was during one of these reverse engineering stints that I realized I needed a game engine.

The reason was that, reverse engineering something like a 3D model format is a bit of trial and error, for example "Is that set of floating point data the vertex positions or the vertex normals?" might be the kind of thing you can't decipher just by looking at it in hexidecimal. This is why I needed a game engine, I needed a way to construct a mesh from what I thought was mesh data, and I needed to be able to iterate quickly if a certain block of data wasn't what I thought it was.

After trying a few game engines, I couldn't find anything that did exactly what I wanted. I found loads that did far more than I wanted, but I just needed something simple. And then KGLT was born.

I started by creating an OpenGL window with SDL, then I needed a way to create meshes, then a way to manage those meshes, then a way to skin those meshes, then I needed to render them faster... before I knew it I had been coding this thing for a year and it had grown beyond what I set out to do, hell, I never did get around to reverse engineering that format!

So, now KGLT exists. It's on my GitHub and it provides a really simple API for building up a 2D or 3D scene. It's written in C++ (although you don't need to worry about memory management or any of that nonsense, it's all taken care of). The whole thing is based around a few core concepts:
  • When you create a Window, it owns a Scene.
  • Each Scene can have multiple SubScenes, although a Scene starts out with one.
  • You can add each SubScene to the Pipeline for rendering by specifying a viewport, camera, target and priority.
  • To render things, you create Entities from Meshes. A Mesh can be shared across Entities.
KGLT is different to other game engines, it doesn't try to be ultra-flexible, or ultra-powerful, or all encompassing. It just provides a common framework for building on top of, a bit like Django in the web world.

KGLT is still in heavy development, but it would be good to get feedback/other contributors. So if you are into game development and you fancy playing around with it, give it a go! Let me know how you get on!

23 comments:

  1. Hey, thank you for sharing these details. I gave up my job at focus Transcription Company four months ago and I have been learning about game development since then. And with months of knowledge and practice, I am confident that I can test my luck in heavy development as well. I am looking up to this opportunity. Will you be kind enough to tell me how can I reach up to you people?

    ReplyDelete
  2. Oh my goodness, you're off to an excellent start. I am convinced that you can also undertake substantial development extremely successfully. I too work withBolt web design as a professional branding consultant, and your blog is incredibly beneficial to me.

    ReplyDelete
  3. Thanks for sharing.I found a lot of interesting information here. A really good post, very thankful and hopeful that you will write many more posts like this one.
    Source: website design service uk

    ReplyDelete
  4. First you got a great blog .I will be interested in more similar topics. i see you got really very useful topics, i will be always checking your blog thanks. professional content writing services

    ReplyDelete
  5. The blog that you have written is informative . I found the exact information that I was looking for and it has helped me a lot.
    Source : O2hair

    ReplyDelete
  6. Now that I've made it abundantly apparent why creating a game engine is a terrible idea, allow me to explain why that's essentially professional web design services what I'm doing.

    ReplyDelete
  7. A personal commercial (also known as an elevator speech, personal introduction, 30-second commercial, etc.) is a quick, effective way to make an impressive introduction. You will use your personal commercial when introducing yourself to a potential employer at a job fair, an interview, or anytime you are asked to introduce yourself professionally. Click here

    ReplyDelete
  8. The Federal Communications Commission awarded the station the call letters KGLT.[3] and transmits from Bozeman and throughout southern Montana, including translators spa massage center karachi in Helena and Livingston.

    ReplyDelete
  9. The rise of social media has significantly impacted the world of fashion and accessories. Instagram trends and hashtags create a sense of community among GOLD BRASS RING enthusiasts, fostering engagement and the sharing of personal styles and experiences.

    ReplyDelete
  10. carbonated bubble clay mask offers a novel and effective way to cleanse the skin deeply, unclog pores, and refresh the complexion. Its bubbling action, while entertaining, serves a purpose in providing a thorough cleansing experience

    ReplyDelete
  11. Every so often I grab an old PC game from my shelf, shove it in the DVD drive and prod around the folder tree looks beautiful. If you are facing any issue in writing thesis please contact Medical Thesis Writing Help in USA

    ReplyDelete
  12. "Really enjoyed the blog – easy to understand and super interesting! you can also check for the how to use a breast pump

    ReplyDelete
  13. Informative post! I learned a lot in a short read. for more video production services near me

    ReplyDelete
  14. I thoroughly enjoyed reading your insightful blog post
    cowhide Tote Bag! Your perspective adds a refreshing depth to the topic.

    ReplyDelete

  15. KGLT offers a dynamic platform for diverse voices, ideas, and music. As a community radio station, it serves as a beacon of local culture, providing an eclectic mix of programming that reflects the vibrant tapestry of its listenership. Tune in for an enriching experience that celebrates both creativity and community. Used cars in surinam

    ReplyDelete
  16. Thanks for sharing this quick introduction, for those balancing a busy schedule with their passion for learning, like students seeking online class help, KGLT's diverse content can be a perfect companion. Whether you need a relaxing background while studying or an energizing mix during breaks, tuning into KGLT can enhance your online learning experience.

    ReplyDelete
  17. The most fulfilling blog. I enjoy it. Custom medal will let my peers read this knowledgeable blog post.

    ReplyDelete
  18. I hope to see more of these posts in the future. Commercial photography los angeles like reading this site.

    ReplyDelete
  19. I have only read the first chapter, but I am captivated. I was encouraged to buy it after reading this story in the New York Times and wanting to learn more about buy smoke roll vapes alternatives to charitable work. I want to know what truly works. When this book arrives, I should be a little more knowledgeable.

    ReplyDelete
  20. This comment has been removed by the author.

    ReplyDelete
  21. I'm on the hunt for the best xuzpost.com/home-appliances in the area. I'm looking for something stylish, high-quality, and reasonably priced. Any recommendations on where to find the best selection and service? Your suggestions would be greatly appreciated

    ReplyDelete
  22. This is an exciting update on KGLT! It's amazing to see how your game framework has evolved from a simple idea into a robust tool for game development. Reverse engineering can be incredibly challenging, and having the right tools to iterate quickly is crucial. For those of us who spend long hours coding and testing, a comfortable workspace is essential. If you're immersed in game development, consider investing in the secret lab best gaming chair to support your back and enhance your focus. Comfort can make a significant difference during those marathon coding sessions. Looking forward to seeing how KGLT progresses!

    ReplyDelete
  23. Pressure Washing Braintree MA This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free.

    ReplyDelete