professorG

Honorable
May 9, 2012
1
0
10,510
Hi guys,

I'm planning to make a FPS first person shooter game for the PC and i'd like to know which programming language/languages i need top learn in order to do so.

I'm going to be using a game engine although i'm not sure which one (But it's going to have to be free),
so any suggestions to which one will also be gratefully recieved.
 

RealBeast

Distinguished
Moderator
C++ for most computer games that run on desktops or laptops, so that would be your first choice. It's really not hard to learn, but it takes work to master.
 

melikepie

Distinguished
Dec 14, 2011
17
0
18,560
It's not that simple as there is so many differences between them that I can't even type them all within an hour (counting I'm not the best at typing). I don't get it do you mean like COD? You need a ton of people to work on anything, you need to make something smaller first like a puzzle game. First I would like to explain the differences between the languages:

Java: This language is cross platform (most are) but the main thing to keep in mind with this is that you can run the
same exact file on Linux, Windows and OSX but at a cost. The thing is not only you need Java to run it but if your wondering
"How can it run on all platforms?" the answer is that Java uses something called a JIT (Just In Time) compiler which takes the file and turns it into code the operating system can use and also optimizes the program for the specific computer it is running on. Java is kinda slow at some things compared to other languages such as C, C++ and many others due to the whole JIT thing (which optimizes it to make up for the slow application boot up thingy). This programming language can do so many things and is easy to learn, minecraft even uses it but again it's not the fastest thing is the world, many people use it but not that much for very big games or programs. Also to note that it can be decompiled back into the code although I will tell you have to stop this by using obfuscation.

C/C++: First off there are many differences between C and C++ (being that C++ is a OOP language), but they are still in
the same general category. Many large companies use this because it's fast and the machine running it can run the file directly. Now there are 2 problems with this, 1 that it is compiled into machine code for the platform it was compiled for so you need to get a new compiler to get the program made for another platform, 2 it cannot be optimized for the machine that's running it due to it's already compiled but you can make optimizations in the code to check what's the machine running it but this may slightly slow it down but still not as much as any JIT compiler language. One main advantage to this language is that it's very hard to decompile the simplest program if not (most likely) impossible, someone who knew machine code would still need time to find out what the program is trying to do let alone the machine code version would be thousands of lines for a small game. In these programming languages you can find where things are in the memory (the RAM) and use that to your programs advantage (to yours if you want to be selfish :)).

C#: This is like Java except it is Windows only (there is something mono project to allow multiplatform, still needs it to be installed like java for that if it's not on Windows :)). You also need the .NET framework installed to run the code. You can look into XNA game studio which is not a game engine but a framework that makes making games easy if that's what you want to do.

The rest of them like Python, Ruby, Perl and some others are scripting languages but I don't recommend using them.

Like I said above about obfuscation, it basically scrambles the code until it's completely unreadable. Look at this, if you compile it as C code it prints the twelve days of christmas lol:
[cpp]#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}[/cpp]
 

Scott_D_Bowen

Honorable
Nov 28, 2012
50
0
10,590
I'm going to be using a game engine although i'm not sure which one (But it's going to have to be free),
- You can't legally make a non-GPL game using a GPL code release from an engine that an existing commercial game uses.

You can however pay them a license fee if they deem your application suitable and compliant.

From memory the Quake 2 source code was GPL'd on December 21, 2001.

The reason I am suggesting Quake 2 is that it will be easier to code for than other applications if you are just starting out.

Anything created from a GPL source base has to be GPL, so you'll be making tech demo's, etc. only, or a fully working demo (small I would assume) and giving it away for free to anyone else whom wants to modify it.

You're not going to find a free game engine that lets you create commercial, real-time, 3D software in OpenGL and/or Direct3D that lets you on-sell for money if that's what you're thinking.

That said, if you're willing to learn C# (Visual C# 2010 Express Edition is a good starting point) I may just join your project to see how far we can go in our spare time.
- I'll be pretty busy for the next 6 months, at least, but you need to learn a language first anyway...

You may want to have a look at:
- http://scottdbowen.id.au/games/doom/Doom_(Shareware).zip
- Put the ZIP in a folder by itself prior to extracting it, it then performs a < 3MB download of a shareware version of Doom, in OpenGL, using a modified version of their code release (known as PrBoom, which the iPhone Doom is based upon).
- It's old, but there are HEAPS of tools and the source code is quite simple by comparison, as it doesn't support rooms over rooms, the map vector data is 'flat'.
- As a result it can run at over 1,400 fps, and slows down to about half that if you just load FRAPS (as FRAPS has a measurable impact, and at ~8 frames per time-slice, under Windows, it really matters).

I have a proposal that may interest you if you are serious about this based on up and coming platforms.

I say this because if a team codes something as a side project, and it gets downloaded 80,000 to 2,000,000 times, and people pay 50 cents to $2 dollars for it then the project has just made between $40,000 and $4,000,000 in revenue.
 

luxology

Honorable
Dec 24, 2012
10
0
10,560


Ha! I thought of that, but the process of completing a project requires an attention span. Well, if you really want to, check out a couple of these engines:
- Unity 3D (free but limited)
- Unreal Engine (free for non commercial, with commercial options)
- Cry Engine 3 SDK (free non-commercial license)

Scott_D_Bowen is right about not finding an awesome engine that you can create commercial content with. But you can find an awesome engine for non-commercial stuff, and then upgrade to a commercial license when you get enough interest.

Good luck. Really, I hope it works :D
lux
 

melikepie

Distinguished
Dec 14, 2011
17
0
18,560

Or just use something like GLFW.
 

ericlewis107

Honorable
Dec 1, 2012
3
0
10,510
Game Maker is a best software for developing games in the Delphi programming language. It is designed to easily develop game without having any thorough understanding of the hard language.
 

luxology

Honorable
Dec 24, 2012
10
0
10,560


Anyone planning on making a FPS game should avoid Game Maker. You can get away with making a 3D game, but unless you want the end result to like Doom (sprite based), you will have to use external plugins or custom code. GM just hasn't been designed for out of the box 3D game design.

But yes, it is easy to use and a good starting point.

lux
 

melikepie

Distinguished
Dec 14, 2011
17
0
18,560

XNA Game Studio is a better place to start :).
 

luxology

Honorable
Dec 24, 2012
10
0
10,560


*sigh* how could I possibly forget that? Definitely agree, esp. with the XBOX support.

lux
 

melikepie

Distinguished
Dec 14, 2011
17
0
18,560

What I like about it is that for beginners they can learn a c style OOP programing language, a common way games are made and it's very capable since it's a DX10 wrapper.