Advertisement

How do people make games without a commercial engine?

Started by October 25, 2017 07:27 PM
7 comments, last by zizulot 6 years, 9 months ago

I see a lot of indie games being released, with "Made with C# and LUA" in their descriptions.

I'm curious to know how viable it is to write your games from a base level of code which is then compiled.

I can't fathom how games are made without an engine. How does someone pick up C# and write games in it for those 24 hour marathons?

From recent study I think it may have something to do with "Libraries", but I still don't know how it works.

Specifically, I don't know how someone draws images to the screen, animates them, creates physics for certain "sprites" and does all of the other stuff that seems so easy in modern engines.

Are libraries used to make this process easier? Would you recommend that someone who has a primitive but solid understanding of programming use a language as opposed to someone else's engine?

I am not talking about fancy 3D games -- just the typical lightweight 2D indie games in this context.

Obviously it is viable - if it possible to write an engine, and it is possible to write a game using an engine, it is possible to do both. Whatever the engine-makers deemed important to create, you can create yourself.

Libraries help, because they are basically pre-packaged bits of code that other people wrote, which you can use. For example, you might use a library to load 3D model formats, or to play back audio. There are many of these, and most are available for the popular programming languages like C++, C#, Java, and Python.

Another word you might hear is a 'framework' - this is usually a big library, or a collection of libraries, that does lots of different things, but which works well as a whole. SDL and SFML are frameworks for C++ which give you a lot of game-making functionality for free.

An engine is basically just the logical extension of this idea - it's typically a framework that is very fully-featured and which comes with its own editor which lets you create and test levels. Unity is an example of an engine that uses C# for its code, and Unreal is an engine that uses C++.

If your main aim is to be productive at making games in the short to medium term, then starting with an engine is probably a good idea. Some people prefer to learn the fundamentals and like starting with a more primitive programming environment and a simpler framework - Python and Pygame is a popular pairing, for example. Each route has pros and cons.

It would be a very tough job to make a game in a 24 hour jam without using at least one game framework or a bunch of good libraries, but that's not to say it isn't possible for the right person.

Advertisement

+1 to everything Kylotan said, and I would add that it greatly depends on the type of game you're making. The game I'm working on right now relies heavily on server-side logic with a relatively lightweight client. I don't plan on using an engine, but am definitely making heavy use of libraries on both sides. I also doubt this would be the kind of game you'd make during a 24-hour jam, but anything's possible...

5 hours ago, Exoaria said:

I see a lot of indie games being released, with "Made with C# and LUA" in their descriptions.

I'm curious to know how viable it is to write your games from a base level of code which is then compiled.

I can't fathom how games are made without an engine. How does someone pick up C# and write games in it for those 24 hour marathons?

From recent study I think it may have something to do with "Libraries", but I still don't know how it works.

Specifically, I don't know how someone draws images to the screen, animates them, creates physics for certain "sprites" and does all of the other stuff that seems so easy in modern engines.

Are libraries used to make this process easier? Would you recommend that someone who has a primitive but solid understanding of programming use a language as opposed to someone else's engine?

I am not talking about fancy 3D games -- just the typical lightweight 2D indie games in this context.

In the 15+ years I've been programming, and mostly doing game development, you tend to have very big library of re-usable code. I've made 2D engines, level designers, item editors, you name it! After making so many engines (really, it's just a collection of re-usable classes to handle the many operations within a game), and tools you tend to become very accustomed to the process which makes those 24 hour marathons very easy for simple single player games, even with the rule that you cannot use pre-existing code.

A lot of people including myself use libraries because I don't need to reinvent the wheel to communicate with the hardware. Another reason you'll see a lot of people using libraries is that they enjoy the creative process of making games and maintaining as much control  as possible. I personally wouldn't use another person's or company's game engine unless it was for a 3D game. 2D games are very simple and I don't need to be concerned with licensing conditions, and working within a restricted environment. I really enjoy the creative process, which is why I never enjoyed using other people's tools, regardless of saving time, or being easier.

Programmer and 3D Artist

12 hours ago, Exoaria said:

I can't fathom how games are made without using code that someone else wrote. How does someone pick up C# and write games in it for those 24 hour marathons?

From recent study I think it may have something to do with "code that someone else wrote", but I still don't know how it works.

Specifically, I don't know how someone draws images to the screen, animates them, creates physics for certain "sprites" and does all of the other stuff that seems so easy with modern code that someone else wrote.

Are collections of code that someone else wrote used to make this process easier? Would you recommend that someone who has a primitive but solid understanding of programming use a language as opposed to someone else's code that they wrote?

Engines contain libraries. Libraries are just code that someone else wrote. Engines are just code that someone else wrote. 

In the quote, above, I've replaced library/engine with "code that someone else wrote" :D

So, what you're asking is whether gamedev is easier when you leverage existing work, and is it harder when you leverage less existing work, and is it much, much harder when you leverage a minimal amount of existing work. Yes, it is :)

In response to a clarification sent in a private message - apart from code that performs certain tasks, there is obviously a lot of knowledge that is required to be effective with game development, and if you're not using a game engine, then there are often several bits of functionality that you need to write (or at least integrate a library for) which you wouldn't ever have to understand if you used the engine's built-in functionality. Learning how to do those techniques - and indeed discovering which ones exist for a given situation - is a slow process, but there's no magic to it. You learn them from:

  • university
  • books
  • online articles
  • online courses
  • reading existing code
  • talks at GDC or similar
  • video guides and tutorials
  • speaking to coworkers
  • asking good questions on Gamedev.net
Advertisement

Since the date I asked this question I spent a vigorous amount of time learning C# and going through programming books.

Even though it's been a month, I feel that I can answer this question better now. What I was looking for was a framework for C#. I didn't understand that not everyone programs a game using DirectX or OpenGL from the ground up.

When using a programming language like C# -- that's all it is, just a language. A way of communicating and translating information. You can build your engine from scratch (which would be near impossible for a beginner) or use a range of libraries and frameworks created by other people for serving the bare minimum amount of functionality for the application you are trying to create. C# doesn't magically make it happen. It communicates through the Operating System and sometimes it's easier to get someone else's code and use it to translate it rather than doing it yourself.

Essentially, when I asked the question, the image that I had in my head could be most closely related to XNA. It's now discontinued, so MonoGame would therefore be the answer I was hoping to get out of the query :"How do I use C# to make a game without a commercial engine?"

Engines for example like Unity have pre-built codes in it, so with that you can make game easier and faster, Unity itself was made from code , so a lot of stuff have started without engines.

This topic is closed to new replies.

Advertisement