The very beginning of a game developers journey

Started by
5 comments, last by 3Ddreamer 10 years, 10 months ago

Hello gamedev.net Community,

I'm a new member to this website (already had an account years ago), but you know, there were studies, work life and other things, and so I hadn't really the time to get into the topic of game development. To my background: I am an Austrian (Europe) guy, I write software for more than 15 years, I am the CEO of a software company (business software and consulting services), and now I made the decision to get my hands on game programming (as i wanted so many years ago)...

I already read many articles here, which try to solve the problem (or give answers) to the question about the programming language which should used to implement the game itself. Either C# or C++ and there are many arguments pro and cons the two languages... Next thing is about the technology stack which should be used, OpenGL or DirectX or to setup the whole thing on open source library lige SDL, SFML, XNA, SharpDX and so on (Now i know, that XNA is definitely dead, because Microsoft does not develop it further...) and so on...

So I got two simply (or not so simply) questions to you:

1) What language is to use, to get platform independence, like, Windows / Linux, iOS or Android.. is there C++ the best way? Is it C# by using the Mono Toolkit?

2) What do you think about the basics? Is it the right way to setup on different libraries (like these i mentioned above) or is it better to start from the very beginning by writing the code for a 2D/3D window itself?

I'm glad, to be here, to return to this amazing community after many years and I hope I learn other people on my journey to game programming.

Thanks for your responses in advance,

Greetings TheProof

Greetings, The Proof

____

more than innovation.

Advertisement

"Passionate journey" makes it sound like you're writing a porn novel.

1) This is language wars territory, so watch out for flames. Either/or is a good answer, although C# is slightly better supported on Windows platforms than others. C++ still has a measure of market dominance. But when you start asking for "which is better?" you're basically carrying around an open bucket of Troll Food[sup]TM[/sup], and you should take appropriate precautions, such as flame-resistant underwear.

2) Depends on your goals. For pure learning, you might start with the basics of window management, framework/foundational code, etc... Don't expect to produce anything releasable right from the start, as it can take quite a bit of time to learn the fundamentals of software engineering sufficiently well to release. If your goal is to build a game in the shortest amount of time, go with a framework. Something like Unity, perhaps. Something that will let you skip past the messy and time-consuming details of framework construction to start expressing your game design ideas with a relative minimum of effort. (Note that does not mean no effort; just somewhat less effort than writing a framework yourself.)

Hello,

Thanks for the hint concerning the topic-title, I've changed this so far :)

ad 1)

Oh my god. I'm so sorry about opening "Pandora's Box", but I really want to get into the topic of game programming language and how they should get used. It's not in my mind, to elevate kind of flaming war. As well, I'm already wearing a flame-resistant underwear.

ad 2)

I had about 5-10 years to wait, until I start beginning the learning process concerning fundamentals and so on - so believe me, when I write: It's not about just in time or doing things really fast. It's my target to get the basic stuff done, to be able to setup on that knowledge later on. So my goal is not to release a game tomorrow, more or less, the primary goal is to get deep into the very basic topics like "How it work all together under the hood" and not the way "Reference Library-X" and use it in your code...

Do you understand what I mean?

Greetings, The Proof

____

more than innovation.

Hello Mario,

You mention that you have worked as the CEO of a software company before. What language did you use at that company? Chances are good that there exists tools/engines/APIs for a language you might already be familiar with.

The question of which language to use is asked daily on these forums. The often repeated answer is to use what you like best. At this stage of your journey the choice of language is largely irrelevant and can be based purely on personal choice. Try several and pick the one you like the best.

Keep in mind that there are a large number of game creation tools on the market such as Game Maker and Unity which can provide a strong base to build upon as you create your game.

The number one key is to just start trying stuff. The fastest way to learn is to jump in.

Good luck.

Hello shadowisadog,

Well, we uses and we are using these langugages mainly C#, Java, Objective C, C++ to achieve our goals in software development. The language itself is not the problem, I am into these.

Further my interest is in the main used languages, which are, as far as I know, C++ and C#, to develop games. Are there any concerns? I mean, the performance thing between C++ and C# is not the kind of argument I accept, because these issues are only relevant if developing kind of AAA-titles or high performance game engines like Crytek or another companies does.

I know that there are many different "so called" Game-IDE but I definitely won't use one of them, because I want to start on my own. Further I would of course basic resources like NeHE or other pages to get into the topic...

I do agree with you, that to jump right in is the best way. That was the same I did when I was about 12 years old.. by this time I jumped into assembler :p, so mov ax, bx ;) ... and after, there was C++ and later on C# and Java.

I guess, I would probably begin wtih C#... what do you think?

Greetings, The Proof

____

more than innovation.

Hi,

Coming to this website and getting involved in this community was a wise choice, so I welcome you. smile.png

I am a 2D and 3D computer video graphics artist specializing in the games and simulations industry with freelance Information Technology consulting on the side. Learning Java, C#, and game development are hobbies of mine which I plan to grow into a business. Some of my colleagues, associates, and friends are skillful coders (in C#, Java, C++, high level scripting languages, and web-based languages) CEOs, professors, consultants, game designers, game developers, artists, and consultants.

(Now i know, that XNA is definitely dead, because Microsoft does not develop it further...)

When a company stops developing a program or software - as long as it still functions well, then it is mature and not dead. The Software Development Life Cycle (SDLC) of XNA continues in implementation development such as Mono and other third party efforts. XNA itself will function full and well for years to come in Windows operating system. Though Microsoft does not directly develop and support XNA anymore, it continues to supply clients with everything that they need to use it and run it in Windows, such as runtime updates. This, again, will be the case for years to come. More than half the U.S.A population is still using WinXP, WinVista, and Win7, which will be the case for quite a while. This means that anyone using this should be encouraged to learn game development with XNA for a few years at least. Mono/ MonoDevelop platform is a very good and fairly up to date implementation of the technology. Also take a look at MonoGame.

As a developer and CEO of a company, to you I suggest being careful about labeling things as "dead". wink.png

For an experienced programmer and IT expert such as yourself, it makes no difference if you settle on C#, C++, or both - speaking in a general sense. With existing libraries, both languages are very capable of being used to reach from very high level to very low level functionality of a game. Performance is excellent with both if done correctly in coding and implementation. Quite a number of game engine and game developers use both languages, typically C++ to handle lower level optimizations such as mult-core/multi-threading and memory caching, while C# is great for scripting or general game functionality.

I recommend to everyone that they create their own games for at least a couple years before trying to make their first game engine, but most should probably never begin game engine development. There are many quality game engines in existence and more to come! "Why reinvent the wheel?" is a common and legitimate question asked in these game development circles in regard to game engines. A comprehensive game engine usually takes 5 to 20 years to mature from beginner to completion and developing games will add years by themselves.

Since you are a very busy person in the software industry, you likely don't have time right now for anything other than learning how to develop games. Make 3 to 5 simple practice games using an existing game engine. Choose a game engine and use its main language. I recommend Unity 3D (originally deriving from Mono), Unreal Engine (UDK), or Torque 3D to you for cross-platform, large community, extensive updated libraries, tutorials, and no cost or little cost art assets to get you well on your way in good time. You have the coding and programming experience to use these in creating fun games at an accelerated pace.

Here is a list of some of the more popular game engines:

http://en.wikipedia.org/wiki/List_of_game_engines

SDKs - At least one of these will be used by you in game development or game engine development eventually.

These are not called Software Development Kits for nothing. As the name implies, they do not focus on the art aspects of game development but rather the coding aspects. These may target a runtime environment such as Common Language Runtime (Windows mainly), Java Runtime Environment (operating system cross-platform), or Mono Runtime Environment ( an operating system cross-platform implementation of CLR ). They also may use and/or include APIs for the hardware cross-platform that you are seeking, being OpenGL, Direct3D, or Mono, as well as other APIs for sound, device input, networking, servers, and so forth. Note: APIs typically are low level handling of coding and directly impacts hardware issues such as graphics.

SDKs are typically kits which focus on at least one native low level language and maybe few scripting languages. Support for advanced game art creation in the form of editors and specialized game art tools may be limited from an art creation viewpoint. However, almost all of them support very well the import of art assets from common graphics programs such as 3DS Max, Maya, Blender, and so forth.

If you want to become an independent game developer, then create games with an existing development platform such as SDL, SFML, Mono/MonoDevelop, or SharpDX, especially if the games are not going to be art intensive because you are not an artist. They do support your development toward game art goals of the future if you eventually need them, being scalable according to plug-ins and your coding skills.

An SDK is an excellent compromise which provides most of the low level coding for you to focus on customizing existing code and creating proprietary game source code on top of the platform. Games made with such an SDK can be programmed to allow the end user to download and/or install the necessary runtime libraries if the game installer detects that the client does not have the runtime installed yet or it needs updating. Important: End-user license terms and agreement must be displayed and agreed by the gamer for all software and libraries according to the license terms of agreement, including third-party ones. This is a great saving in coding effort provided by the best SDKs, accelerating your game development by months. Having the low level coding libraries mostly provided to you to customize saves you years in development time and money. They also provide all the technical documentation and license agreements which is part of the time and effort saved. Very supportive communities further shorten the development cycle.

Game Engines

As the name implies, these are systems of game development aimed at games mostly and not the other coding issues such as making your own graphics, physics, sound, scene graph, or other coding intensive underlying areas. Plugin alternatives often exist. Libraries, including terrain editors and character animation editors or plugins are provided for you. All of these utilities are specially designed for game design and art creation pipeline flow for maximum efficiency, saving you years in coding your own libraries. Sure, you can usually customize those things all that you want, but it will take years in its own right to mature.

If the game concepts in your goals are art heavy, then you would be better served with a game engine like the ones I recommended which attract many skillful game designers and artists. These will require that you form a team and delegate areas to members. They are proven most attractive to everybody involved if you are a good team leader. The most is achieved in the shortest amount of time with a good game engine.

APIs

On the other hand, if your goal is to create your own game engine (5 to 20 years includes your first successful game as well) and launch your games off it, then I highly recommend an API. OpenGL and existing Software Development Kits (SDK) for it are among the most efficient for implementing across hardware computing devices. In fact Java and the Java Runtime Environment or directly targeting OpenGL are the most efficient for hardware cross-platform implementation, for example created software to run on computers with any OS and also iPhone/Android mobiles. This is a great choice if your games will be more coding intensive than art loaded. As an alternative, many game engines include tools for working with an API such as OpenGL for hardware cross-platform implementation. For being able to run your game in a computer and also a most mobile devices, OpenGL API is very common.

Summary

Creating and publishing your first successful and profitable game might take years. Developing your own game engine will add some years to the release of your first comprehensive game. A good and popular compromise is to use existing libraries (such as GUI creation editors, physics, device input, and so on) which come with an SDK, such as Mono ( Remember that hardware and OS cross-platform Unity 3D was initially derived from Mono, for example, showing the potential. )

To start totally or almost from nothing, then you need an IDE (Integrated Development Environment) such as Java IDE, Visual Studio, Eclipse, SharpDevelop, MonoDevelop, or other. Assuming that you are an expert in coding, then writing all that physics, sound, editors, encoders, GUIs, input device application, graphics, networking/server, and special tools with take at least 5-10 years in my opinion, but maybe 10-20 for a beginner. If you compromise with libraries in these areas which are designed to be used with one of these IDEs (perhaps only by plug-in for the IDE), then you are still looking at 3-5 years to develop your own game engine which is complete and ready for a team.

Team Required for professional results in only a few years:

Game engine development, using an existing game engine, relying on an IDE, SDKs, and APIs for low level coding, and creating several of your own major libraries - all demand a team for company success (unless you intentionally want to create legacy style simple games or games so easy to develop that a student could do it, such as "arcade games" or simple mobile device games).

Game development or game engine development each take years alone. Being a solo game developer adds more years from beginner to pro release of a profitable game in many cases. A team with good chemistry will save years, money, and pain, while adding to the gross sales and profit rate potential.

Recommendation to You:

OpenGL used with an SDK (if you are a solo developer making simple games, want to create much low level coding, or art assets are light)

=or=

OpenGL with a game engine (if a team will be formed and/or art assets are heavy in the game design)

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Hi,

Coming to this website and getting involved in this community was a wise choice, so I welcome you. smile.png

I am a 2D and 3D computer video graphics artist specializing in the games and simulations industry with freelance Information Technology consulting on the side. Learning Java, C#, and game development are hobbies of mine which I plan to grow into a business. Some of my colleagues, associates, and friends are skillful coders (in C#, Java, C++, high level scripting languages, and web-based languages) CEOs, professors, consultants, game designers, game developers, artists, and consultants.

(Now i know, that XNA is definitely dead, because Microsoft does not develop it further...)

When a company stops developing a program or software - as long as it still functions well, then it is mature and not dead. The Software Development Life Cycle (SDLC) of XNA continues in implementation development such as Mono and other third party efforts. XNA itself will function full and well for years to come in Windows operating system. Though Microsoft does not directly develop and support XNA anymore, it continues to supply clients with everything that they need to use it and run it in Windows, such as runtime updates. This, again, will be the case for years to come. More than half the U.S.A population is still using WinXP, WinVista, and Win7, which will be the case for quite a while. This means that anyone using this should be encouraged to learn game development with XNA for a few years at least. Mono/ MonoDevelop platform is a very good and fairly up to date implementation of the technology. Also take a look at MonoGame.

As a developer and CEO of a company, to you I suggest being careful about labeling things as "dead". wink.png

For an experienced programmer and IT expert such as yourself, it makes no difference if you settle on C#, C++, or both - speaking in a general sense. With existing libraries, both languages are very capable of being used to reach from very high level to very low level functionality of a game. Performance is excellent with both if done correctly in coding and implementation. Quite a number of game engine and game developers use both languages, typically C++ to handle lower level optimizations such as mult-core/multi-threading and memory caching, while C# is great for scripting or general game functionality.

I recommend to everyone that they create their own games for at least a couple years before trying to make their first game engine, but most should probably never begin game engine development. There are many quality game engines in existence and more to come! "Why reinvent the wheel?" is a common and legitimate question asked in these game development circles in regard to game engines. A comprehensive game engine usually takes 5 to 20 years to mature from beginner to completion and developing games will add years by themselves.

Since you are a very busy person in the software industry, you likely don't have time right now for anything other than learning how to develop games. Make 3 to 5 simple practice games using an existing game engine. Choose a game engine and use its main language. I recommend Unity 3D (originally deriving from Mono), Unreal Engine (UDK), or Torque 3D to you for cross-platform, large community, extensive updated libraries, tutorials, and no cost or little cost art assets to get you well on your way in good time. You have the coding and programming experience to use these in creating fun games at an accelerated pace.

Here is a list of some of the more popular game engines:

http://en.wikipedia.org/wiki/List_of_game_engines

SDKs - At least one of these will be used by you in game development or game engine development eventually.

These are not called Software Development Kits for nothing. As the name implies, they do not focus on the art aspects of game development but rather the coding aspects. These may target a runtime environment such as Common Language Runtime (Windows mainly), Java Runtime Environment (operating system cross-platform), or Mono Runtime Environment ( an operating system cross-platform implementation of CLR ). They also may use and/or include APIs for the hardware cross-platform that you are seeking, being OpenGL, Direct3D, or Mono, as well as other APIs for sound, device input, networking, servers, and so forth. Note: APIs typically are low level handling of coding and directly impacts hardware issues such as graphics.

SDKs are typically kits which focus on at least one native low level language and maybe few scripting languages. Support for advanced game art creation in the form of editors and specialized game art tools may be limited from an art creation viewpoint. However, almost all of them support very well the import of art assets from common graphics programs such as 3DS Max, Maya, Blender, and so forth.

If you want to become an independent game developer, then create games with an existing development platform such as SDL, SFML, Mono/MonoDevelop, or SharpDX, especially if the games are not going to be art intensive because you are not an artist. They do support your development toward game art goals of the future if you eventually need them, being scalable according to plug-ins and your coding skills.

An SDK is an excellent compromise which provides most of the low level coding for you to focus on customizing existing code and creating proprietary game source code on top of the platform. Games made with such an SDK can be programmed to allow the end user to download and/or install the necessary runtime libraries if the game installer detects that the client does not have the runtime installed yet or it needs updating. Important: End-user license terms and agreement must be displayed and agreed by the gamer for all software and libraries according to the license terms of agreement, including third-party ones. This is a great saving in coding effort provided by the best SDKs, accelerating your game development by months. Having the low level coding libraries mostly provided to you to customize saves you years in development time and money. They also provide all the technical documentation and license agreements which is part of the time and effort saved. Very supportive communities further shorten the development cycle.

Game Engines

As the name implies, these are systems of game development aimed at games mostly and not the other coding issues such as making your own graphics, physics, sound, scene graph, or other coding intensive underlying areas. Plugin alternatives often exist. Libraries, including terrain editors and character animation editors or plugins are provided for you. All of these utilities are specially designed for game design and art creation pipeline flow for maximum efficiency, saving you years in coding your own libraries. Sure, you can usually customize those things all that you want, but it will take years in its own right to mature.

If the game concepts in your goals are art heavy, then you would be better served with a game engine like the ones I recommended which attract many skillful game designers and artists. These will require that you form a team and delegate areas to members. They are proven most attractive to everybody involved if you are a good team leader. The most is achieved in the shortest amount of time with a good game engine.

APIs

On the other hand, if your goal is to create your own game engine (5 to 20 years includes your first successful game as well) and launch your games off it, then I highly recommend an API. OpenGL and existing Software Development Kits (SDK) for it are among the most efficient for implementing across hardware computing devices. In fact Java and the Java Runtime Environment or directly targeting OpenGL are the most efficient for hardware cross-platform implementation, for example created software to run on computers with any OS and also iPhone/Android mobiles. This is a great choice if your games will be more coding intensive than art loaded. As an alternative, many game engines include tools for working with an API such as OpenGL for hardware cross-platform implementation. For being able to run your game in a computer and also most mobile devices, OpenGL API is very common.

Summary

Creating and publishing your first successful and profitable game might take years. Developing your own game engine will add some years to the release of your first comprehensive game. A good and popular compromise is to use existing libraries (such as GUI creation editors, physics, device input, and so on) which come with an SDK, such as Mono ( Remember that hardware and OS cross-platform Unity 3D was initially derived from Mono, for example, showing the potential. )

To start totally or almost from nothing, then you need an IDE (Integrated Development Environment) such as Java IDE, Visual Studio, Eclipse, SharpDevelop, MonoDevelop, or other. Assuming that you are an expert in coding, then writing all that physics, sound, editors, encoders, GUIs, input device application, graphics, networking/server, and special tools will take at least 5-10 years in my opinion, but maybe 10-20 for a beginner. If you compromise with libraries in these areas which are designed to be used with one of these IDEs (perhaps only by plug-in for the IDE), then you are still looking at 3-5 years to develop your own game engine which is complete and ready for a team.

Team Required for professional results in only a few years:

Game engine development, using an existing game engine, relying on an IDE, SDKs, and APIs for low level coding, and creating several of your own major libraries - all demand a team for company success (unless you intentionally want to create legacy style simple games or games so easy to develop that a student could do it, such as "arcade games" or simple mobile device games).

Game development or game engine development each take years alone. Being a solo game developer adds more years from beginner to pro release of a profitable game in many cases. A team with good chemistry will save years, money, and pain, while adding to the gross sales and profit rate potential.

Recommendation to You:

OpenGL used with an SDK (if you are a solo developer making simple games, want to create much low level coding, or art assets are light)

=or=

OpenGL with a game engine (if a team will be formed and/or art assets are heavy in the game design)

Knowing how much art asset will be in your games and also whether you are a solo or team oriented developer may be the two most deciding factors on your strategy of a business model for game development. Selection of development software obviously is top of the list of tasks related to these.

Game Development Organization: Acquiring an existing game engine and a team saves you years from start to release of a complex game that turns a profit.

Solo developer making simple games and much low level coding with easy art assets: Using an SDK such as SFML, Mono, or SharpDX .

Game engine developer: An IDE with plugins and existing low level libraries becomes more valuable with the low level coding of game engine development. API coding to develop for OpenGL is fully supported with an IDE.

Hardware Cross-platform Deployment is most efficient with Java, Java Runtime Environment, Mono, or OpenGL/ Open APIs such as OpenCL, though C# and C++ application development is supported in various ways with all of these. (Hardware cross-platform development is more low level coding than Operating System cross-platform development in general, hardware cross-platform development always involving an API such as OpenGL)

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

This topic is closed to new replies.

Advertisement