12 Replies - 4933 Views - Last Post: 17 May 2011 - 06:35 PM Rate Topic: -----

#1 SixOfEleven  Icon User is offline

  • using Caffeine;
  • member icon

Reputation: 945
  • View blog
  • Posts: 6,342
  • Joined: 18-October 08

Discussion: High-level vs Low-level

Post icon  Posted 17 May 2011 - 06:43 AM

*
POPULAR

There have been many discussions on what tools to use for game programming. I thought it would be a good idea to have a discussion on the pros and cons of using high-level and low-level tools as related to game programming. There exist a number of high-level tools that provide abstraction that help a person first starting out pick up the concepts of game programming. There are also tools that are much closer to the operating system for making games.

My opinion:
For the beginner game programmer I would usually suggest starting with a high-level tool. The abstraction these tools offer shield the you from many low-level tasks and allow you to focus more on game mechanics and understanding how games work. If you're constantly having to check obscure API calls to get something to work it will hamper your initial progress. I'd even suggest starting with a high-level language for the same reason.

Eventually if you want a job in the industry you are going to have to move to low-level tools and languages. You won't be using XNA or SDL or other libraries. You will be using the company's tools and you will have to understand how to interact with them at a much lower level that what the high level APIs and tools provide.

Basically, there is nothing wrong with starting with something that is high-level, and staying with it if you're a hobbyist. If you want to get into the trenches and do this professionally with a game development company plan to move to the low-level tools.

Is This A Good Question/Topic? 8
  • +

Replies To: Discussion: High-level vs Low-level

#2 v0rtex  Icon User is offline

  • Caffeine: db "Never Enough!"
  • member icon

Reputation: 223
  • View blog
  • Posts: 773
  • Joined: 02-June 10

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 07:37 AM

I agree, I am new to Game Programming and I started with Java OpenGL but then fell back onto java3D as it is easier to worry about the game mechanics than the current state of the videocard buffers, just my experience though :)
Was This Post Helpful? 0
  • +
  • -

#3 anonymous26  Icon User is offline

  • D.I.C Lover

Reputation: 0
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 08:35 AM

I'm coming to realize that people do game programming for two, if not more reasons which are:

1. The satisfaction of creating a complete game 'product' without being tied down with the technical intricacies.
2. Those who are curious about what drives games at the lowest level with less of a focus on completing a number of games.

I'm of type 2. I do not have a large suite of completed homebrew game titles but you will find a lot of experimental projects that will test graphics, AI, audio, IO and optimizations on my harddrive. This is extremely powerful knowledge to have if you want to have the most freedom in creating your own game titles. The trouble as well with being a 'type 1' is that with the set of tools you have there is nothing that particularly stands out in your game because you are using something that the majority of others use. Yes, this can also be true for those of 'type 2', but you will see a lot more variation from that group simply because they put more thought and effort into the actual technology used and the features of that tech used in the game.

That is my 2c. :)
Was This Post Helpful? 1
  • +
  • -

#4 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,595
  • Joined: 16-October 07

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 09:12 AM

I'd go with type 2 as well. Then again, type 1 is work. ;)

The actual process of developing a game, or any production program, from start to finish, isn't all that fun. More importantly, it isn't all programming. There a whole lot of testing and documenting. Depending on the scope, meetings, charts, schedules. And then, if you thought you were done after final release; support.

Programming is fun. Working on the same project for months, or years, at a time, isn't. Again, final product is a drag.

Strangely, the "I just wanna make a program" crowd usually seems to want to put in less effort. They're looking for joy of creation without the effort that goes into it. I often wonder what such folks envision making a game entails. It is the confidence of ignorance.

To actually write a program, head to tail, requires that the person is a programmer at heart. They must enjoy tinkering with code and solving problems with it. At that point, the level of the language doesn't really matter. I think the drive to make the cool game isn't an awful starting point... ok, I'm lying, I kind of think it is! Rather, wanting to understand how even the most basic programs are created is a far more useful to the dreaming game dev.
Was This Post Helpful? 1
  • +
  • -

#5 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 09:17 AM

im a type 2 person. in fact once i know i can do something i typically don't do it again.

i think the debate of High Vs. Low level is one of purpose however. if im writing the framework ,where most of work is going to be done, i would prefer to use a lower level well structured and fast language. however if im writing the game logic and it's not too hefty, then i want to use a higher level easy language with garbage collection and dynamic typing. this is one of the reason i like Lua so much :)
Was This Post Helpful? 0
  • +
  • -

#6 mgchild  Icon User is offline

  • New D.I.C Head

Reputation: 3
  • View blog
  • Posts: 19
  • Joined: 14-January 11

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 10:23 AM

I think ish makes a great point. It really depends on what you are focused on. Today's games while amazing are truly complex monsters of many moving parts and pieces. If you want to do engine design, then it's low level. If you don't care about the mechanics, then high level. Let's face it, the little red-head in my avator was done on the Unreal Engine (up to this point) and it's been a pretty sucessful series.

So are you story teller or a programmer? I think that leads you in a better direction.
Was This Post Helpful? 0
  • +
  • -

#7 v0rtex  Icon User is offline

  • Caffeine: db "Never Enough!"
  • member icon

Reputation: 223
  • View blog
  • Posts: 773
  • Joined: 02-June 10

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 11:42 AM

I would say I'm type 2, Java3D even though it is somewhat high-level compared to some of the C/C++ API's, it is still one of the lowest level game libraries available for Java. atm, its between JOGL (Which is ok atm but needs alot more work on it), Java3D (which should suit all your needs) and JMonkeyEngine (Probably easiest to learn out of the three).

java3D gives me access to low-level functions if I need but also has wrappers that can do it for me, I code with DirectX when coding games in C++ but atm have only been focusing on Java really as for my final year project (of school), we have to code something and I chose to code a game and apparently in order to code it in C++ (Which I have used more than Java), I have to take it up with the education board so I just decided to learn more about Java :)

I disagree though that you have to be type 2 to be a hobby game programmer, Many can code some awesome games using really high level API's such as pygame, I believe although you should know what goes on in the background of the engine, that is something that should be learnt after you have experimented with game programming a little bit before. If you are type 1 or 2, you can make a good game if you are dedicated enough to it, I do agree though that someone who bothers to learn enough to be a type 2 Game programmer (as said) would most likely produce a better game. Thats just my opinion though

This post has been edited by v0rtex: 17 May 2011 - 11:43 AM

Was This Post Helpful? 0
  • +
  • -

#8 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,595
  • Joined: 16-October 07

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 12:32 PM

High-level... That can mean a lot. If you're a C programmer, C++ is high level. ;)

I'll take high level to mean a fairly complete framework. A game engine. Some kind of abstraction in place for my in game physical objects. In short, the grunt work has been done. There's still more strata here, however.

The highest level are probably in place environments than are intended to simply be manipulated. We can blame Sid Meier for SimCity and go from there. Sid noticed that he was having more fun playing with his design tools than coding, so I'll nominate Sid our first "high-level" game designer. Minecraft goes up here, I guess.

More customizable environments, like various 3D worlds, might be half a step lower. Second Life ( gods help me, I still get spam for code a wrote forever ago in that thing) etc.

Somewhere in here is also games that are extendable, "moddable." This sometimes isn't programming at all, so much as skinning. This is where things like Lua cam come into play, where a game engine is in place and all you need is a scriptable level with hooks to flesh out the content.

I'm sure there's some kind of OSI style stack we could come up with for game development... could be amusing.

I'd argue that if you're coding, regardless of level, then you're a programmer. Even in Lua land, you can be a programmer. We tend to think of low level as being close to our bare metal machine brain. But that's still just a programmer manipulating the environment available to them. Every environment has a point at which you can't go any lower. It's all still programming.

That said, there are places you can go, like Sid's games, where you're more designer than developer.
Was This Post Helpful? 0
  • +
  • -

#9 anonymous26  Icon User is offline

  • D.I.C Lover

Reputation: 0
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 01:10 PM

There used to be a role in game development that has all but vanished called a 'game scripter'. They used to use scripting languages to control in-game events, but never played with the core game engine/logic. That role has been superseded by tools that allow designers to set parameters to give the game a better feel.

It is true to say that as long as you are specifying some sort of logic in code then you are 'programming', but there is the problem of defining scope where simply putting objects together like in a game making program will call that programming, and the purists asserting that you are only programming when not using such tools.

I remember some years ago where it was pointed out to me that anyone even using a computer is effectively programming, since they are defining and carrying through a sequence of steps to perform a specific task. Interesting. :)
Was This Post Helpful? 0
  • +
  • -

#10 raziel_  Icon User is offline

  • Like a lollipop
  • member icon

Reputation: 464
  • View blog
  • Posts: 4,255
  • Joined: 25-March 09

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 02:08 PM

except that programming ask from you to think what will happen if this and will this help your program while "using computer while they are defining and carrying through a sequence of steps to perform a specific task" is like monkeys getting the banana. You know that the pigs can use PC and Joystick pretty sick i watch it on NGC :P

This post has been edited by NoBrain: 17 May 2011 - 02:09 PM

Was This Post Helpful? 0
  • +
  • -

#11 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,595
  • Joined: 16-October 07

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 05:01 PM

View PostButchDean, on 17 May 2011 - 04:10 PM, said:

I remember some years ago where it was pointed out to me that anyone even using a computer is effectively programming, since they are defining and carrying through a sequence of steps to perform a specific task.


I would argue that defining the steps in your head, and not the computer's, doesn't quite count. If you must liken operating to developing, I'd say the operating process is most like using an interactive shell. You are issuing commands, but not building anything.

Your average primate or even enlightened house cat, is capable of using the tools around them. Creating such tools, however, is another matter.

This post has been edited by baavgai: 17 May 2011 - 05:02 PM

Was This Post Helpful? 0
  • +
  • -

#12 anonymous26  Icon User is offline

  • D.I.C Lover

Reputation: 0
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 05:38 PM

View Postbaavgai, on 18 May 2011 - 01:01 AM, said:

View PostButchDean, on 17 May 2011 - 04:10 PM, said:

I remember some years ago where it was pointed out to me that anyone even using a computer is effectively programming, since they are defining and carrying through a sequence of steps to perform a specific task.


I would argue that defining the steps in your head, and not the computer's, doesn't quite count. If you must liken operating to developing, I'd say the operating process is most like using an interactive shell. You are issuing commands, but not building anything.

Your average primate or even enlightened house cat, is capable of using the tools around them. Creating such tools, however, is another matter.

An interesting perspective, but for the sake of debate, when you program something you are employing a method or set of methods that alter the state of the machine to make it perform a particular or set of tasks. Looking at it from that perspective the line between what is 'programming' and what is 'operating' is actually quite blurry.

Yes you can say that when you are programming you are creating applications that allow the user to interact with the computer, which is more akin to operating when the user uses that application. My point is that back in the old days before GUIs people used to operate computers by typing text at the command line which was parsed and was effectively source code that made the computer do something. The users were not classed as programmers and their very short one-line commands were not classified as programs, yet what they were doing could be interpreted as them writing very short interpreted scripts. Now with the entry of operating systems with GUIs this perception has been effectively lost.

Enter Visual Programming. Now, we interpret the activity of software engineering as using a text-based programming language to define program logic. Visual programming offers an alternative.

With that in mind and going back to your point that any chimp can operate a computer but cannot program, let's say that we got a chimp to create some extremely simple program using a visual programming language environment, will they have programmed? Also, just by virtue of using a computer you are altering its state just as you would (ignoring the specific method of course) as if you were programming.

This goes back to the point of this very thread of when are you coding games to such a depth where you could be said to be actually 'programming' a game versus just plonking bits together using simple tools.
Was This Post Helpful? 0
  • +
  • -

#13 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,595
  • Joined: 16-October 07

Re: Discussion: High-level vs Low-level

Posted 17 May 2011 - 06:35 PM

Chimps only program in visual basic. ;)

I agree, the point of the thread is where development is more than simply executing canned code with some configuration settings. I think markup languages a good example of design versus development. You can make the best web pages in the world, but with just HTML there is a well understood limit to your universe. Indeed, you can't even manipulate state. On the other hand, you can write a Javascript program that does actively manipulate state, even if it's domain of influence is still just the same browser as the markup.

I would maintain that construction of tools, rather than simply using existent tools, is where the line is drawn. I'm not saying that line can't be blurry.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1