Skip to main content
GameDev.net gamedev.net
🔒 Locked 🎯 Unreal

Game Engine or custom game engine?

Started by Samiorga Feb 1, 2019 at 6:48 PM 40 replies 21.4k views
Original Post
Samiorga
Samiorga

Hello there! I am new to the GameDev community.

I am a currently a software engineer student at college. As much as I love programming I don't like how this program is introducing me to the programming experience. I have been programming for around 7-ish years with Java, C, C++ and HTML (CSS). I got into software engineering hoping to get into game development but I have been disappointed with the results in this program.

I applied for game development at college but they asked for a portfolio of things that I have done, and to be honest I have not done anything special or anything that would turn heads. So I just went into software engineering.

**QUESTION STARTS HERE**

I have been wanting to create my own game (for the experience) to show potential employers. Full 3D gameplay with decent game mechanics.

My question is... Should I create this game in a custom engine (or no engine, just straight hard coding) or should I be looking into creating a game using Unity or Unreal (*not using blueprint*)?

I am looking to have a somewhat professional looking result but at the same time I know that by myself I won't get anywhere close to a modern game without a team.

If anyone has some experience in either of those game engines (or others), please let me know your thoughts and how I should approach game development.

markypooch
markypooch

Generally speaking, most of your knowledge will be ascertained through initiative. College is great, and in my humble op-onion (though others have had different results, and may have a different perspective) a generic software engineering degree has the potential to open up more doors than a Game Development degree. So I would recommend sticking it through if you're having second thoughts.

Insofar as the engine v.s. custom engine it's probably worth noting that the term, "Engine" gets thrown a bit much. Many people extrapolate it to many things. Generally, when i think engine, I think the works, scene-graph, full blown editor, drag&drop shaders, nice high-level api for the object logic, etc. While this is a route you could go. It could take awhile. That doesn't mean it's not worth it, and you wouldn't learn a lot through the process it's just a matter of how quickly you want to get items into that portfolio.

To clarify,

You can still create a game without any engine. Right, kinda what you eluded to in your post. This takes us down a step further with actually _talking_ to an API that'll assist you in rendering graphics, and in most cases, only that. (Take Direct3D for example. That api has been trimmed down in recent years to basically be an interface for just your GPU pipeline. While optional APIs like xinput, and friends existing under the umbrella of the DirectX platform). I can code a game with the API boilerplate, and game logic tailored just for that game. Sure, this will likely, if coded well, result in re-useable code, but that's a far cry from an engine type experience.

There are also lots of game oriented frameworks out there. Tools that don't truly rise to the level of an, "Engine experience" but abstract lots of the underpinnings you would need to handle yourself at the API layer. SDL is the first to come to mind, but I'm fairly sure that's 2D exclusively. However, there are 3D rendering frameworks out there as well that aren't coming to mind atm. I'm sure other members could fill in that omission

Working with pre-built engines is also fine! You can do some great stuff very portfolio worthy with most engines nowadays. From what I hear from the grindstone around the forums is UE tends to have a slightly higher learning curve than unity, but I'd still think both would be a good choice.

In summation, all the options you mentioned are fine, it's just a matter of what you want your portfolio to look like, and how quickly:

  • Do you want to show off a WIP engine, that, sure, doesn't really render much of anything interesting to the screen, but has a solid design.
  • A game that is of limited means in the art department, but has some cool gameplay mechanics
  • And (optionally) some engine experience Unity/UE4 thrown in
_Silence_
_Silence_

It might also depend on what the OP would like to do. If he wants to do game logic and AI, then for sure using an existing engine will help. But if he wants to be a graphics programmer, network programmer or so, then showing that he could have done it the hard way will certainly be noticed.

Vilem Otte
Vilem Otte
1 hour ago, Samiorga said:

My question is... Should I create this game in a custom engine (or no engine, just straight hard coding) or should I be looking into creating a game using Unity or Unreal (*not using blueprint*)?

This is entirely up to you - and where you aim with your career or company. One advice though, make SOMETHING which will prove that you can finish something. I'd say that even simple games for game jams count (like Ludum Dare).

Few remarks:

- there is nothing like 'no engine' or 'straight hard coding' - any moderately complex project will require you to structure your source in some way, that will be re-usable to some extent, at this point it is an engine

- lots of people tend to mix up engine and toolset, making tools for engine to be actually usable is very time consuming (I actually post about that from time to time)

2 hours ago, Samiorga said:

 I am looking to have a somewhat professional looking result but at the same time I know that by myself I won't get anywhere close to a modern game without a team.

This is simply based on the scale of the project. You can have professionally looking result by yourself, it all boils down to how much time are you willing to invest in such project.

For this I'd point you out to F.e. mapping challenges for Counter Strike or such, it is common that they're made by one person (or few people at most), often including assets. Bear in mind though that they dedicate lots of time to get single high quality map.

It is all about desired quality and size of the project. Making high quality, small project, is definitely possible.

2 hours ago, Samiorga said:

If anyone has some experience in either of those game engines (or others), please let me know your thoughts and how I should approach game development.

My advice is - try all of the mentioned. I'd even go further and advise you to make at least one project per either of those engines, and even one by yourself. It doesn't need to be extremely complex or huge - keep it simple and small. Learning multiple tools and applications is viable in any industry, not just game.

And most importantly - make whatever you enjoy making.

Awoken
Awoken

Hi @Samiorga, I am not a trained developer myself, but I've been programming a framework/tool-set for close to five years. What I've learned during this time is that there is a distinction between a framework/tool-set and a game. a tool-set or the more ambitious game-engine is largely, if not entirely, a technical undertaking. A lot of problem and how-to solving. I think if it as more objective thinking. To contrast that, game development involves huge amounts of creativity and design. Taking a subjective experience you've conceptualised and having to turn it into something that in the end is hopefully enjoyable for the user. A much different style of thinking. I'd say in my opinion the former, the technical undertaking, is easier and the results can be depended upon. The later requires a higher level of execution to achieve something that is fun.

Just my two thoughts.

JaredBGreat
JaredBGreat

I make a different distinction between a framework or engine and a toolkit. To me, an engine is a readily just the reusable technical underbelly for a game, a body of code that takes care of a large amount core functionality (graphics, sound, resource management, IO, events, etc.) that can be used across a large number of games -- which may or may not be of a variety of types / genres. A toolkit to me is some like an SDK / GDK possibly including editors for resources as well. The idea that a game with "no engine" might later turn into an engine for other games is, well, how engines, in general, got started -- "Hey, wanna license our Doom engine?" "Hmmm, let's build on our code from Unreal for Unreal II, and while we're at it, license it for whoever will agree to out terms and pay a royalty." So, building a game with "no engine" could be the first step in creating the engine it implicitly contains -- even if it's not as big or as flexible as Unity or Unreal (the Doom engine was basically a shooter engine, you wouldn't go 2D with it). Perhaps that might even be the best way to start an engine? Personally, I'd like to develop my own engine / engineless game and get into using one of the major engines as well; whether or not that is for you I cannot say.

Randy Gaul
Randy Gaul

If you want to learn technical details make your own engine. If you want to learn practical details that will be applicable to your first job search, use a pre-made engine like Unity or Unreal. Lots of entry level positions either require or prefer candidates with big engine experience.

Samiorga
Samiorga

Wow! So many responses!! I guess this may be more then a straight forward answer. Looks like I have a lot more options to go for when deciding whether I want to make my own custom engine, toolkit or pre-built game engine.

22 hours ago, Vilem Otte said:

My advice is - try all of the mentioned. I'd even go further and advise you to make at least one project per either of those engines, and even one by yourself. It doesn't need to be extremely complex or huge - keep it simple and small. Learning multiple tools and applications is viable in any industry, not just game.

And most importantly - make whatever you enjoy making.

I like this idea a lot. I think that I will go towards this route at first. To use a pre-built game engine (Unreal and Unity) for starting off. By doing this I will be able to have some experience for employers and I will get familiar with the programs. I want to get to know how to use these and the mechanics of the program before I can get started with building my own engine/toolkit. I know that creating an engine will be difficult and will require lots of work towards making it functional.

So much insightful information to has been given to me. Thanks to everyone for responding to my question.

Promit
Promit
On 2/1/2019 at 3:59 PM, Vilem Otte said:

One advice though, make SOMETHING which will prove that you can finish something. I'd say that even simple games for game jams count (like Ludum Dare).

I'm afraid I have to disagree. This was good advice once upon a time when making finished looking projects was really difficult. That's no longer the case, to be candid about it. Between the big engines and asset stores for those engines and plentiful samples, making a finished simple game is about the least useful thing. It's no longer a good marker of competence or tenacity, and employers are beginning to catch on to this fact.

If your goal is to just get a job on simple games-related work (mobile games or entertainment app type stuff), go ahead and learn Unity and throw some stuff together. But if your goal is serious AAA game development, do something that demonstrates heavy hitting technical competence. Don't write a game - write something that is legitimately challenging. Show off some sophisticated graphics techniques, maybe something with advanced custom physics, or something with interesting complex gameplay.

I'm not going to speak for hiring practices across what's a very diverse industry these days. But we develop our own engine and tech, and at this point I'm outright discarding any candidate who can't show me a track record of building interesting technical work from scratch.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Vilem Otte
Vilem Otte
1 hour ago, Promit said:

I'm afraid I have to disagree. This was good advice once upon a time when making finished looking projects was really difficult. That's no longer the case, to be candid about it. Between the big engines and asset stores for those engines and plentiful samples, making a finished simple game is about the least useful thing. It's no longer a good marker of competence or tenacity, and employers are beginning to catch on to this fact.

Having anything is definitely better than nothing, although I definitely agree on point that making a simple game is not really a challenge anymore (you can just buy most of it on asset store and put it together in Unity or UE).

Speaking from my point of view in my location (this will heavily differ based on location) - majority of candidates won't have anything to show you at all. If you're lucky there may be some with technical background from university (thesis), seniors don't go into game industry that often around here.

Proving that they can actually finish something is an advantage, of course having more complex projects puts you at advantage/disadvantage compared to others. In some companies asking all candidates to do a technically challenging project and giving them a time range between few days and few weeks was used (for junior positions they didn't even need to have anything other than doing this).

1 hour ago, Promit said:

at this point I'm outright discarding any candidate who can't show me a track record of building interesting technical work from scratch

Out of my curiosity - Can you elaborate a bit on that 'from scratch'?

Fulcrum.013
Fulcrum.013


On 2/1/2019 at 8:48 PM, Samiorga said:

My question is... Should I create this game in a custom engine (or no engine, just straight hard coding) or should I be looking into creating a game using Unity or Unreal (*not using blueprint*)?

Just figure out a list of features that you game will have. Than compare it against list of featutes that existing engines able to perfom. And you will see is it have reason to use one of existing engines, or make engine or mini-engine from scratch. Generally, it is 2 main reason to make custom engine :

1. You need something very simple and lightweight. Also it good way to study concepts that drive engines work inside, and it can be done a very fast. For example simple tunnel walker has take from me around a week, and simple arcade space shooter has take less than month of development completely from scratch.

2. You need something amazing new, that not suppoted by existing engines and can not be added to existing engine making custom components for it. And it maraphone distance run. For example it take around 2 years for me to briefly get in phisical and advanced mathematical background of it.( I started reserches into it field already having Master degree in Applicative math and CS and 20+ yeras of expirience in general software development including FA and scientific software). Also it require a huge work to implement infrastructural libraries, like custom containets, in-scene GUI contols libraties, persistent technology that allow to serialize/desetialize trees of objects, and so on auxiliary tools that existing engines already have from box.

#define if(a) if((a) && rand()%100)
Promit
Promit
2 hours ago, Vilem Otte said:

Out of my curiosity - Can you elaborate a bit on that 'from scratch'?

I don't care so much about helper libraries (SDL or GLFW or something), but I've really found it much more interesting to see something where the functional components are substantially homegrown. That means all of the architecture, design, and problem solving is really the dev's own solo work, which is not possible in Unity or Unreal and is often not the case with other large engines (Godot, Ogre, what have you). There's real value in being forced to build something (almost) entirely on your own, and not basing on tens or hundreds of thousands of lines of other people's work.

(And yes, you could twist this to talk about standard libraries or operating systems or whatever as being other people's code. I don't think the comparison is valid.)

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
_Silence_
_Silence_
2 hours ago, Fulcrum.013 said:


Just figure out a list of features that you game will have. Than compare it against list of featutes that existing engines able to perfom. And you will see is it have reason to use one of existing engines, or make engine or mini-engine from scratch. Generally, it is 2 main reason to make custom engine :

1. You need something very simple and lightweight. Also it good way to study concepts that drive engines work inside, and it can be done a very fast. For example simple tunnel walker has take from me around a week, and simple arcade space shooter has take less than month of development completely from scratch.

2. You need something amazing new, that not suppoted by existing engines and can not be added to existing engine making custom components for it. And it maraphone distance run. For example it take around 2 years for me to briefly get in phisical and advanced mathematical background of it.( I started reserches into it field already having Master degree in Applicative math and CS and 20+ yeras of expirience in general software development including FA and scientific software). Also it require a huge work to implement infrastructural libraries, like custom containets, in-scene GUI contols libraties, persistent technology that allow to serialize/desetialize trees of objects, and so on auxiliary tools that existing engines already have from box.

While what you say has sense, OP is still a student. And except if he already is writing an engine since many years, what you propose it not easy to achieve, not to tell almost impossible.

20 years ago it was possible. I remember myself proud to devise some things. But sooner or later, other people will have had the same idea. And nowadays, you cannot really create something new. Graphics programming has reached apex and if you don't spend years working on a little thing (that many other will work on the same kind of idea, in research centers and big companies...) you'll reach nothing. And since graphics hardware is growing very fast you're running against the wind...

Fulcrum.013
Fulcrum.013


3 hours ago, _Silence_ said:

And since graphics hardware is growing very fast you're running against the wind...

For first mainstream engines failed to use a modern hardware abilities. for example it no engines around that support spline-based models, while it significantly improve quality, decreace size of models and have hardware support since DX11 has been introduced over 8 yers ago. And for main gaming != graphics only. It ever more of phisic simulation and game ai/logic than graphic. For example engine, that made from graphics and have based on classical for graphics scene tree of grizmos architrcture, slowing down actual game development and making difficulties with simulations, razer sped up it and solve problems. Instead engine that build around phisic simulation that send objects position to rendering subsystem much better for actual game development. Of cource rendering is impotrant part. But graphics!= "anything that we see on screen". For example animation is not a graphic but a realtime phisic simulation. So really engine is a solid bar made from "phisoniy" metal, covered by thin layer of "graphoniy" metal.

#define if(a) if((a) && rand()%100)
Samiorga
Samiorga

I recently applied to a job as a junior software engineer. While in my interview they asked me around how many lines of code I have of experience. I gave them a rough estimate of a few hundred thousand. At the end they said and I quote "You don't have enough lines of code of experience." This really got me angry and I am glad that I didn't get the job as I wouldn't have wanted to work for an employer that is expecting millions of line of code from a junior software engineer.

So at this point I know that I have to make something and actually complete it and show it's functionality to my employer. Whether it being a functional engine of some sort or a very well made game with graphics using a pre-built game engine.

11 hours ago, _Silence_ said:

While what you say has sense, OP is still a student. And except if he already is writing an engine since many years, what you propose it not easy to achieve, not to tell almost impossible.

I have not written any engine. I have written physics libraries and collision libraries and implementing them in some early java games. This may be my first time putting it all together to make an engine/toolkit. I have created a few games with java by using all their internal functions and libraries (physics, gravity, graphics etc), but I found that I needed some more freedom with the libraries that were given to me.

Now, if I choose to program an engine using multiple tool-kits, what should I be implementing within the engine?

By implementing I am talking about graphics, audio, character animations etc. Would I be able to create my own engine to incorporate all these or would I have to use something separate like 3Ds Max to create a characters, or some other program for animations?

Fulcrum.013
Fulcrum.013
4 minutes ago, Samiorga said:

At the end they said and I quote "You don't have enough lines of code of experience." This really got me angry and I am glad that I didn't get the job as I wouldn't have wanted to work for an employer that is expecting millions of line of code from a junior software engineer.

100k lines of c++ code have more chances to summon the devil than chances to work. Really developer qualification inversely proportional to lines of code that he/she needs to write for solve complexive task. Than better programmer able to analize task field than less code he/she needs to write. For example geometrical core of CADs rare exids 20k lines. May be thay mentioned something like it?

#define if(a) if((a) && rand()%100)
Samiorga
Samiorga
1 minute ago, Fulcrum.013 said:

May be thay mentioned something like it?

No mention of this whatsoever. They were a startup company so they were probably looking for someone young with a lot of programming experience. And they used lines of code as a reference to calculate the amount of experience that they had...

Fulcrum.013
Fulcrum.013
14 minutes ago, Samiorga said:

They were a startup company

Thay just using huge number of lines into their codebase as a advertisment slogan. In my country at least 90% of startups is just a scam, 9% belive that thay want to do some usefull, but dont know what same exactly they want to invent, 0,9% know what thay want but have any ideas and knowledge how to do what thay want, and only rest have chances to really develop something new. And it can be easily determined. Its 0.1% of startups usualy created by educated professionals, that have strong background into related field, and hire only educated professionals with enought background into related field.

#define if(a) if((a) && rand()%100)
lawnjelly
lawnjelly
1 minute ago, Samiorga said:

No mention of this whatsoever. They were a startup company so they were probably looking for someone young with a lot of programming experience. And they used lines of code as a reference to calculate the amount of experience that they had...

I wouldn't read too much into this, it's unrealistic to expect an honest answer why you didn't get offered a position, there could be a million reasons, most of which would not be in their interest to communicate. For instance often companies do interviews when they already have a person lined up for the job, and you are being interviewed for form filling / legal reasons, and you are wasting your time.

You could also be e.g. wearing the wrong t shirt, but because of labour laws they had to make up some other excuse. You would be surprised at some of the reasons people get rejected, including being too good (I joke not!), not naive enough etc etc.

Or of course the obvious one, they interviewed someone else better.

Oberon_Command
Oberon_Command
44 minutes ago, Samiorga said:

No mention of this whatsoever. They were a startup company so they were probably looking for someone young with a lot of programming experience. And they used lines of code as a reference to calculate the amount of experience that they had...

I suggest that they probably weren't expecting you to have *written* a million lines of code. I don't think anyone expects that of junior developers. The phrasing you used here is "how many lines experienced." I would assume that they were asking about whether you had worked in a codebase that large before. I suspect based on this that they already have a codebase that large and are looking for people who are comfortable working in those sorts of circumstances.

9 hours ago, Fulcrum.013 said:

For first mainstream engines failed to use a modern hardware abilities. for example it no engines around that support spline-based models, while it significantly improve quality, decreace size of models and have hardware support since DX11 has been introduced over 8 yers ago.

I suggest that if game artists wanted to deal with building, rigging, and animating spline-based models, and programmers wanted to deal with optimizing their rendering, then game engines would support them. Currently I don't believe that is the case. ;)

Quality generally takes a back seat to performance and tools support in the video game industry. Remember, video games are magic shows. They don't have to look exactly accurate, they just have to look "not wrong." Many corners are cut in the name of performance.

Also, source on DX11 supporting splines-based rendering? I googled, but I can't find anything on this. DX11 does support tesselation, but that's not the same thing.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.