Making everything by yourself. And loving it!

Hi all here are some things I have been thinking about for some time after reading a few topics on this forum.

I am currently making a game with LWJGL and I am making everything from scratch!
A lot of people on the forum is talking about “reinventing the wheel” and how you should use something like libGDX so you can get to making games faster.
I understand how people can have this opinion but I think that some of them forget that writing engines can also be fun! :slight_smile:

For me personally I really enjoy writing low level stuff!
This is why I left using slick2D because I was not using any of the built-in functions.
An example being pathfinding where I found it really entertaining writing an A-star class from scratch.

I love learning all of the stuff included in creating a game! Displaying graphics, playing sound, making music, drawing custom textures, everything!

For some people it’s about ego when they write everything themselves but for me it’s for the fun of it :slight_smile:
This does mean that I will probably spend 3 times as long to create my game, but who cares? It’s just a hobby and hobbies are just about having fun :smiley:

Good to see, that I am not the only one with this opinion :slight_smile:

On the one hand reinventing the wheel could be a waste of time, but on the other hand you’ll learn a lot of things through reinventing the wheel!
I don’t think it would be a waste of time, and if you learned how to build that wheel you still can take some high level api if you want to.

Now I’ve got to go, lecture is waiting :slight_smile:

Yes, you have no need to reinvent the bicycle unless it is the pleasure itself. :slight_smile:

For the past month or so I’ve been using LibGDX and for the 3 months before that I was using LWJGL, attempting to create my own game engine. Though I wouldn’t say that that 3 months was a waste, as I learnt a lot of the maths and the jargon, I would say that attempting to create my own game engine was a painstaking long, and in the end boring process. After switching to using LibGDX everything became much more fun as I’d actually started making a game.

In the end you’ll eventually get bored. Have fun at the start though. :slight_smile:

Yeah I know the feeling. Working with LibGDX is a pleasure, especially for deploying both to desktop and android, but there’s something very nice in building a framework yourself and learning in the process.

When building a house, I don’t care who made my saw and hammer. Maybe I could craft them by myself but it takes a lot of time from the house itself and I guess my saw won’t be so sharp than one purchased from a store.

Nothing wrong with forging hammers as a hobby, though.

I always struggle to find my hammer, so perhaps this life style is for me.

Different strokes for different folks :slight_smile:

If your interest is purely in creating a great looking game without getting too deep into the nitty-gritty of OpengL, LWJGL, etc. then using something like libgdx is a no-brainer.

If you do want to get into the nitty-gritty then crafting your own ‘engine’ is a great way to learn.

I’m definitely in the later camp. OK so the stuff I build is purely for my own interest and will almost certainly never see the outside world, but as a couple of other posters have noted, it’s a hobby.

That said I think the ‘reinventing the wheel’ point is still valid - I could (for example) write my own code-generated Java API from the underlying C-based DLL, but LWJGL does that, it’s tried and tested, so I use that. Ditto logging. Ditto image loading libraries. etc.

It’s just a question of goals - if you want to make a game and focus on the “game” aspect, you’ll want to use all tools and shortcuts which let you focus on game creation.

If you are interested in the mechanics of games, and not so much the game made with the machinery, you surely want to find out how to make such machinery.

Usually the former approach results in games, and the latter results in (game) engines.

To use the house building analogy, there’s different degrees to “doing everything by yourself”, e.g.:

  1. Build an axe from pieces of stone and wood. Cut down trees. Mine iron ore. Build a smelter. Forge nails. Forge hammer. Build house. Enjoy the result.
  2. Buy some high quality planks, nails and some tools from the local supplier. Build house. Enjoy the result.
  3. Buy a prefab house construction kit. Assemble house. Enjoy the result.

I’d say thats pretty comparable to game development approaches. Some people like to build a game literally bit-by-bit in assembly code, some people use a framework that put in place the basics but allows a lot of freedom (e.g. LibGDX, LWJGL nuances), some people just like to assemble ready-made pieces (e.g. game maker). Every approach is valid, although I tend to think that the more a developer “does everything herself” the more unique a game will become, as fewer people will go that route and manage to actually complete something.

I really like the house analogy :smiley:

Of course I am not doing EVERYTHING by myself.
I wouldn’t want to go mine up silicon to make a micro processor :stuck_out_tongue:

But I just wanted to air the idea of open-mindedness :slight_smile:

And it seems you all get my point :smiley:

Long ago I also made my own graphics libraries, my own UI toolkits and the like.

I still do some of that. So I can say “been there, done that”. But the people who warn about reinventing the wheel have a point. One really tends to spend a lot of time on “cool code”, which a while later won’t be of any interest anymore.

I assume it’s a thing of “age” - starting developers need to learn and also understand how things work, and doing your own versions of all sorts of low level and support code is good for that.

Later you know all that, got tired of it, and the result (the game) comes more into focus.

Maybe I’m wrong there, but at least for me it worked this way. At times I feel uncertain though what’s quicker - looking for a premade solution or doing it by myself. In some cases searching takes long, and if it’s unsuccessful one still needs to do the work oneself.

On the other hand I’m often surprised what is there already, wioth fair licenses and just for you to use. Unfortunately it’s often hard to faind :confused:

Its also a matter of learning to choose the right frameworks and libraries for you. I wasted a lot of time by reinventing the wheel. I also wasted a lot of time figuring out how to work around some obscure weirdness in some framework or library that is essentially a black box for me. After developing a couple of (simple) games / applications I get an increasingly clear idea on where the sweet spot is for me: libraries that do the essentials that I’m not too interested in (i.e. LWJGL doing low-level bindings) leaving me free to do the part of making games where I can have fun, be productive and flexible (e.g. making my own shaders but not writing my own C interfacing code).

That is exactly what I am doing all the time. I love to tweak/tinker around with LWJGL, and incrementally developing my engine.

My workflow is basically this:

+ Find a interesting topic.
+ Learn about the topic.
+ Make a bunch of prototypes about the topic.
+ Clean the best prototype up...
+ Push  it into my game-engine.

By doing so I got a few dozen ten-thousand (FEW * 12 * 10000) lines of code.
Numbers could be off by ± a zero.
Gotta go and let the code-line-counter application run through my workspace!

Have a nice day!

  • Longor1996