• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
ISDCaptain01

How come many of you prefer to make games from scratch rather than use an engine?

25 posts in this topic

So my main question is that why alot of you use API/libraries like directx/opengl/sfml/allegro/sdl/xna and etc to make games rather than use an engine like unity/udk/troque? Doest using an engine make game dev a lot more streamlined and easier than using an api? What are your reasons?

0

Share this post


Link to post
Share on other sites

Well made point, Eddie. Its the same reason im using allegro rather than an engine. Keep posting your reasons people!

2

Share this post


Link to post
Share on other sites

NIH

 

I'm super angry that I have to use stuff like DirectX and FMOD. I'd prefer ASSUMING DIRECT CONTROL.

 

lol

 

No, my reasoning is pretty much identical to JD557's.

0

Share this post


Link to post
Share on other sites

I enjoy coding. It's fun and a passion. I understand you still must code when using a game engine, however it's generally very high level and a lot more simple than code I would write when I'm developing without an engine.

 

If I start making Three-Dimensional games and I need to push out a large product quickly with a team, of course I will use Unity, however I work alone (As of now) and am making Two-Dimensional Games. As I've detailed in other posts of mine, I actually use Construct Two for prototyping. It's easy to drag and drop some placeholder art, write some quick HTML5 / JavaScript, and make a small prototype for a game Mechanic. If it's fun, I'll try to go ahead and program the game myself.

 

Learning how to program using a Game Engine doesn't seem very good to me (Unless you're an artist). Many programmers I've seen who learned to code with an engine write painfully slow and pointless code. I learned how to use C++, and waited a year before jumping into Graphics. I'm still learning different quirks surrounding the language and exploring C++11, however the experience I gained from learning a language and not an API / Engine is helpful and an underlying reason why I enjoy programming. I understand peoples code, and it's an amazing feeling. Actually being a coder makes me feel accomplished, and every time I spend a few days working on a problem / fixing a problem, I get an amazing sense of accomplishment.

 

The community for many Game Engines reflects many of my points. On the Unity forums, far too many (Even the well respected) of the programmers learned with Unity, and as a result, are not as helpful had it been a low-level programmer who had joined one of the teams on the forums. They don't normally write efficient code, and don't understand what their code does besides what they know from Unity. This isn't helped by the fact that the forums are barraged with teenagers trying to recruit actual game developers for their new "Zombie-MMO-DayZ however Better-FPS". I'd say about half of the community is twelve year old's. I should link you to a post (Albeit old) from a group of twelve year old's who had promised their school they would make an MMO (bigger than World-Of-Warcraft) and were looking for a team to make the MMO for them.

 

I respect the developers on the Unity Asset Store however. They are some of the most hard-working programmers I've seen and they make amazing software. It's no wonder that many of them work as programmers at larger studios (I've seen some from the likes of Electronic-Arts) or use lower-level API's.

 

I believe using an Engine is smart if you understand how the Engine works. This is the main reason why I'm learning OpenGL. I want to understand. I constantly read about Security (Security+), New programming languages, design patterns, practices, Books on new languages (and current languages). Understanding is important to me. I felt a feeling of "This is all to big for me to understand" when I started. There's just so much, it's hard to sort through it all.

 

Wow, that was a rant tongue.png! Cheers :)!

1

Share this post


Link to post
Share on other sites

I use directx on top of win32 and that is because I just want to learn things. So I'm making my own engine atm. But if I would in the situation, that I just want to ship some "little" game for mobile or tablet to market, I think I would use an engine. Would save a lot of time.

 

Awhile ago I read a little column, that many of finnish game companies are using Unity at the moment because they can concentrate more on developing contents of the game rather than adjusting the engine. And they are choosing Unity because it's quite easy to use. I also used Unity engine when we made networking game project in our school and it's really easy to use. Quite many finnish game companies, which are perhaps start-up companies or beginning companies have some nice idea so they just want that idea as fast as possible to market. Developing an engine would cost money and they couldn't concentrate on the original idea hence they have to develope the engine for it. But that's not what everybody does, but it seems that majority though.

0

Share this post


Link to post
Share on other sites

Personally I do it to learn and get better at it. I also think it's really fun to commit to do something and then do what it takes to accomplish it.

0

Share this post


Link to post
Share on other sites

I think one reason to write from scratch rather than an engine is also the flexibility of doing things EXACTLY how you want. It just comes at the cost of massively increased effort and difficulty which is fun in its own right for some.

0

Share this post


Link to post
Share on other sites

Question - What is SFML - First time seeing the acronym ?

  I like coding myself, and I got into game programming because I got frustrated with others game engine where the AI (Artificial Intellegence) seemd to not provide me as a player with a way of winning.

  By not using an Engine, I can ensure that my games are designed to "Play" the game with you as if I were sitting across the table from you.  By incorporating a "Learning System Routine", I can even simulate you playing yourself,  How is that for Stratedgy ?

0

Share this post


Link to post
Share on other sites

Currently i try to use libraries if the task requires very specific code, for example platform specific things (loading files, windowing, input...) and lets say parsing a file format. Maybe even a math library with SIMD code for different platforms because that is platform specific too.

1

Share this post


Link to post
Share on other sites

As Morphex mentioned, SFML is another library for getting a window for graphics onscreen, with input events, sound, and other features.

 

SFML, the name of the library, stands for "Simple [and] Fast Multimedia Layer". It's designed in C++, so it has a more OOP-ish design than other libraries like SDL (Simple Directmedia Layer), but that is not a plus (nor a negative), simply a fact about its nature. Honestly, for lower level libraries, too much OOP-ishness sometimes gets in my way.

 

SDL and SFML are both great, but my preference leans slightly to SFML. I've used them both for several years each. Neither is necessarily superior to the other, except in minor ways.

0

Share this post


Link to post
Share on other sites

[quote name='superman3275' timestamp='1356849108' post='5015664']
Learning how to program using a Game Engine doesn't seem very good to me (Unless you're an artist). Many programmers I've seen who learned to code with an engine write painfully slow and pointless code. I learned how to use C++, and waited a year before jumping into Graphics.
[/quote]

This is a good point. These engines like unity etc. really do so much for you, it doesn't show you anything about how the pieces fit together to make the end product. If you become skilled at programming you can utilize libraries to help you out but from there on you are "in control". It is the difference between a chisel and a CNC router.

0

Share this post


Link to post
Share on other sites

I see engines as being of two types: hobby engines that were designed to be more like game-making 'kits', a stand-alone product whose developer's sole intention is to maximize profits by creating something that appeals to a greater audience of people that just want to make games (non-coders) without knowing anything... and on the other hand there are the high-end triple-A title engines like id Tech, Unreal Engine, etc.. which were not designed to be stand-alone game-making 'kits', but are the underlying software of "serious games".

 

The high-end commercial engines are typically not afraid to expose the developer to the complexity of its internals, whereas the hobby game making kit engines are designed with the sole purpose of making the tech itself transparent, whether it be by providing tools or an API, or simple scripting language.

 

The reason I pointed out "serious games" is because these game development companies strive to milk the hardware for every possible drop of performance they can, to push polycounts and shader operations to the max - because mainstream games are always trying to top themselves in terms of measurable quantities - like frames per second and polygons per scene. Nowadays they are just trying to make everything look realistic without making it feel good - because screenshots in a magazine or on the screen only convey that aspect in the advertising. Now they promote video games using videos of pre-rendered animations and (sometimes) zero in-game footage, which frustrates me the most. I want to see what *I'm going to see* when I play the game, not some dreamed up cinematic clip.

 

I was into making mods for Quake before the hobby game engines were a reality - there was one game kit I got my hands on when I was 11 called the GCS - or 'Game Creation System' by Pie In the Sky software (I'm sure they no longer exist).. It was a system for making wolfenstein 3D-esque DOS games, without programming (so awesome, as a kid).

 

The reality is that every piece of 3rd-party material you use to make something, be it a code function, a library, or a whole engine, is just a piece of *your* project that isn't really something *you* made. That means that *you* don't (generally) have the freedom to fine-tune it as you see-fit, nor do you have the ability to customize aspects of it that are outside your scope of understanding and/or ability. Some will recompile libraries to add in specific functionality, and even to optimize specific functions, but most ignore the possibility of these options all-together and take libraries as-is.

 

When you learn how to do things yourself, from the inside out, you get the power, control, and freedom to make as much of your project how you want it to be. Whether that be for aesthetic, functionality, design, or performance.. When you just use someone else's code, it will simplify and accelerate development, but it's a piece of *your* project that was created by someone else of possibly less-than-desirable skill and ability.

 

A lot of the times I don't want to be limited to the 'summed-up' options a library's offered functionality may entail, nor do I want to be concerned with my software being under the licensing requirements of some 3rd party code I could opt to use. I'd rather write my own code, that's suited specifically for my project's needs, so that I can maximize performance and resource consumption - CPU and memory/disk use.

 

It wasn't long ago I was using the Tiny C compiler for a project - and desiring to compile C code in which MSVCRT.DLL wasn't a dependency... some of you may enjoy that. I know it's possible - but it ended up being too much of a hassle for what I was trying to do. Microsoft's standard C library implementation will have to do, otherwise I may as well be writing my code in win32 assembly.

 

All-in-all, it's a trade-off between your project's desired delivery time, and your ability to control everything about your project, so that it can be exactly how you want or need, so that it can truly be *your* project. Most people with no experience whatsoever will choose the fast-delivery-time route, because it involves minor learning curves and immediate results.. I want it now so I need it now. I'm sure that just about every good programmer on the planet that's worth his salt didn't get started out by making a high-end game engine, or even a game-engine, they started with Hello World.

2

Share this post


Link to post
Share on other sites

I only ever write 2D games. If I ever write a 3D game, I will use a (free or permissively licensed) engine in a heartbeat.

 

For 2D, however, engines, or more appropriately "game frameworks" in 2D world, aren't really worth it to me with one exception which i will discuss below. A 2D game framework on top of DirectX or OpenGL is just not that hard a thing to write yourself and doing so is very rewarding. Further, 3rd party game frameworks tend to be bloated due to the constraint placed upon them that they must try to handle the requirements of any 2d game imaginable. When you roll-your-own 2D game and have the whole thing sitting on top of just a graphics, audio and input abstraction layer, you can make the "game framework" portion of your game extremely lightweight (e.g. I don't need classes for parallax scrolling to write a tetris-style puzzle game) and when you start a new game you can take that code and extend it as needed or not extend it at all.

 

The exception I mentioned above is when there is a requirement for crossplatform-ness as in the case of developing for mobile devices and supporting both iOS and Android without rewriting your entire codebase. In this case -- especially when iOS is involved -- I do recommend using a 2D game framework. Writing your own cross-platform layer and getting it right is not an easy thing. But here, too, for me at least, the fact that I end up using a full game engine in this case rather than a lower-level hardware abstraction layer is really just an artifact of what is available for free (i.e. cocos2d-x) rather than what I would actually choose all things being equal.

Edited by jwezorek
1

Share this post


Link to post
Share on other sites
So my main question is that why alot of you use API/libraries like directx/opengl/sfml/allegro/sdl/xna and etc to make games rather than use an engine like unity/udk/troque? Doest using an engine make game dev a lot more streamlined and easier than using an api? What are your reasons?

 

If I were to make a 3D game, I will definitely use an engine like Unity, UDK or Torque. Developing a 3D engine myself as an indie developer is complete waste of time.

 

Many people who come to this forum underestimate the amount of work it takes to write an engine from scratch, and would say things like "I am going to make a full 3D MMORPG/RTS/RPG/FPS and I will write my own engine from scratch". Most give up after a short time. There are those who make progress, but I see a lot of abandoned projects.

 

For myself, I don't do 3D games. I do browser games. And I use libraries and engines whenever I can to cut down development time. We're game developers, not software engineers lol.

 

I used to use Adobe Flash, which makes it very easy to churn out games. Now, developing HTML5 web applications, I try to use Javascript engine whenever possible but because the technology is so new, there isn't anything as versatile as Flash yet. Most HTML5 engines are for platformers and physics based games. There are engines like Construct 2 but they are aimed at non-programmers and quite a hassle to use for programmers.

0

Share this post


Link to post
Share on other sites
Whilst I dont often use a premade engine for my projects, I like to mix and match smaller individual libraries that do only one job but do it well.

Like if you look at a large engine (especially closed source ones) like Unity and then decide that you want to use your own Sound system it is very fiddly because Unity generally doesn't like the user loading in their own assets directly rather than going through their resources system. Or if you wanted to use System.Windows.Forms, Unity makes it generally impossible.

My typical setup is:
OpenAL
libogg
OpenGL
libpng
freeglut (Yes, I am a Glut lover)
libwavefront_ext (custom animation system)
tritri.c (A fast triangle-triangle intersect test by Tomas Moller)

So whilst this isn't a full engine, I can generally do anything, and it also means I can use task specific libraries / technologies when I need to (like ode physics, android NDK, OpenCL etc...)

If a platform doesn't support one of the above libraries, it is pretty trivial to just swap it out (using ifdefs). So I find this solution to be the most portable.

I see engines as being of two types: hobby engines that were designed to be more like game-making 'kits', a stand-alone product whose developer's sole intention is to maximize profits by creating something that appeals to a greater audience of people that just want to make games (non-coders) without knowing anything...
Yes this is the latest trend to turn would be developers into consumers. I feel that a lot of people are missing out on useful experience and education by misusing tools like Unity without really knowing what is happening. (Using it more like Microsoft Office than a development tool).
I occasionally do some programming lectures at university and was shocked when the students were starting to learn Unity for one of their units!
Nowerdays the students from UNIX system programming units can make better (portable) games than those on Entertainment Media (Games) Development courses. Edited by Karsten_
2

Share this post


Link to post
Share on other sites

For me it boils down to two things:

1. Ready made engines are bloated, and my games are small.

2. Curiosity - I like to understand how stuff works. (That's why I started programming in the first-place)

When it comes to things which don't interest me much, like audio synthesis, I use engines without a second thought.

1

Share this post


Link to post
Share on other sites

At this point in my skill level it's as easy for me to learn how to do it from scratch as it is to try and figure out how someone else did it from scratch.
That might change later, but it's true for now.

Also, it's /mine/.

Plus, like a few other people said, it's FUN! <3

0

Share this post


Link to post
Share on other sites

I like engines. But more importantly, I like well abstracted, stable, flexible libraries. Isn't it great to wake up in the morning and realize there is a new 1.x.x release for one of the libraries you are using? It's like another person on the team did the job while you were sleeping. Same thing applies to engines.

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0