How are the big programs made

Pages: 12
closed account (EwCjE3v7)
I always wanted to how professional programs were written, I know they will have code but like what will be most used, will it be like now the if the for the while or will it be more about functions.
Classes? Your question doesn't really make much sense.

EDIT: @Nathan2222: This is my 8999th post.
Last edited on
closed account (iAk3T05o)
@LB: Your 9000th post :).
If you want to know how they are made, buy the unreal 4 engine for $20 and check out the full source code. And while you're at it, post the details and how many lines of code it has.
It is written in the same way as the programs you make as small personal projects. They too use a combination of loops/ifs/functions and all those other things. To tell the truth, they are just same as any other program, just written by the software market dominators ;). You can't say which will be used more, either functions or classes as it really depends on the programmer. You can have a code without functions that works the same way with functions.
Last edited on
To make a big program, you need big code. Simple as that :)
closed account (13bSLyTq)
Hi,

It is actually programmed in sub-teams with each team with a specific goal\achievement to do for example when building say a IDE, sub teams will do the following:

- Team 1 - UI and Interface of IDE.
- Team 2 - Compiler Development
- Team 3 - Code optimization development
- Team 4 - Rapid-Productive tools
- Team 5 - Synchronizing all functions and calling them.

- Testers & Debuggers - Test & Debug all final candidates

This is a rough-draft or rough-example of how such softwares are developed. Once a team has developed one part the team moves on to a different task but which the software developers have skill in.

That being spoken, its fair to say it takes few months to make the project big and complicated. Then there is few more months of testing before release candidate is publicly released but it is still under review and testings by public until after a year when the release becomes a stable release with *MAJORITY* of bugs removed and squashed.

I believe you guys might be interested in seeing the sheer size of few of the most notable software applications: http://www.informationisbeautiful.net/visualizations/million-lines-of-code/
Last edited on
If you want to know what the code of a large program looks like, just take a look!

Flight simulator: http://www.flightgear.org/download/source-code/

3D RTS game: https://github.com/0ad/0ad

3D animation: http://www.blender.org/download/

Web browser: https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Downloading_Source_Archives

@OrionMaster - Interesting link! I think it's a bit stupid they put biological things in there... But it's interesting to see how much source code is in various applications.
Nathan2222 wrote:
If you want to know how they are made, buy the unreal 4 engine for $20 and check out the full source code. And while you're at it, post the details and how many lines of code it has.

If you are that hard up for knowing how many LOC Unreal 4 is why don't you buy it rather than making pointless posts across sites wanting others to do it.1

@YellowPyrmid
Sorry for derailing the thread, but I'll get back on topic. It is a mixture of several things (functions, classes, structs, etc.). Basically everything that goes into a small program is just multiplied in bigger programs. As for what is used most is a program by program case as some could use tons of functions, others could use classes, still others could use each equally.

1: http://www.gamedev.net/topic/654685-ue4-cryengine-and-unity-5-will-it-work/page-2#entry5141320
Also, with bigger projects, there will often be a large number of things that may not appear at all in smaller projects. For example, there will be a larger emphasis in multithreading, scripting, and very likely would have a large number of completely separate modules for ease of testing. This puts emphasis in the fact that a large program will often have a large number of classes to facilitate more rapid application design and improve code reuse, but this is not necessarily the case (for example, coding classes in C is basically impossible).
I can sort of relate to big projects. The emphasis on organization and tools is a lot different.

I was (sort of still am) working with these guys who had a few of their own big ole plugins for their Minecraft server. (Herocraft if you're interested) They have a big private repository and various other means for source control, because there are a lot of changes made here and there. They use Jenkins for building.

However, this still is nothing like being part of a full fledged team developing major software.
Read a book about software engineering. It's a large topic, and a lot of a disagreements on how "big" software should be created.
closed account (iAk3T05o)
@bhx: it's a big program. Just as torque/ogre/blender etc. is.
I don't even know why . . .
Nathan2222 wrote:

@bhx: it's a big program. Just as torque/ogre/blender etc. is.
I don't even know why . . .

Really? Are they? I thought they were terminal apps that printed "Hello, World!" to standard output.

My point was, you keep telling people to spend their money to tell you the lines of code in Unreal 4. If you care that much about how many lines of code Unreal 4 is, then spend $20 of your money and find out for yourself.

@YellowPyrmid
Have you thought about looking at Torque3D's source? They made it open source recently and you can see how their code is done.
It's similar to how other complicated things are made, modularity and abstraction.

An example would be a car. You have many parts. They can be removed and replaced by other parts with similar specs build by other manufacturers. You can contract out the part to be made by someone else who has no clue about the car the part is made for. And other cars could use the same part as well. The part is modular.

When making a large application, the same idea is used.

Modularity:

The program has many parts which can be made independently of each other. In this way, many people can work on the same project without interfering with each other. But the catch is you need a contract to ensure that the parts will meet the specifications required of them. So you have a document which makes guarantees about the parts. These guarantees usually come with tests which ensure all of the guarantees are good.

Abstraction:

Abstraction lets you treat something as a single object and worry about the requirements of that object rather than treating it as a sum more elementary parts and worry about the requirements of each of those. You assume that the parts it's made of are OK as they already have their independent guarantees and tests.

For example, a memory chip is made of transistors and those transistors are made of gates which are made of silicon which is made of protons and neutrons and electrons which are made of .... Abstraction brings you higher up, the lowest level being the atomic fundamental parts that cannot be broken down. All along the way up, each next level of abstraction makes it's own guarantees so that at the level beyond, whatever is composed of it can be treated as a single object rather than as a collection of objects.

Abstraction is what allows us to manage enormous complexity. It factors one very nasty unmanageably equation with many many variables into many smaller easily manageable equations with fewer variables.
Last edited on
closed account (iAk3T05o)
@bhx: yes they are terminal apps. They are printing "unfortunately we come from the same forums". Good thing it's only 2. You actually linked to another forum. Hmm.
He, not you, was asking for a big program and i told him unreal, it was his choice to check it or not to. The fact that we are in the same forums doesn't mean you should post about my other forum activities and link to God knows where.

@htirwin: thanks for that nice post.
Last edited on
closed account (EwCjE3v7)
Sorry guys, I didn`t reply but did read some posts before.

Yea I meant the code. Thank you

Like are classes used more, what are used to implement GUI etc
closed account (iAk3T05o)
For GUI, i know of Qt and cmake, i.e. it's used for blender and maya. For actual code, i already said where.
closed account (EwCjE3v7)
Ok thank you
Not sure why, but I really like the way this project was designed. It's a 2D Action RPG Game Engine primarily made for Zelda-type games (the people who made it released 2 high-quality fan games), but it can be used for other things. Along with it being a C++ Engine, it has Lua support as well. I'm just going to leave a link right here.

https://github.com/christopho/solarus
Last edited on
The UE3 engine has tens of thousands of lines of code(if not, hundreds of thousands) . I can only assume UE4 has more.
Pages: 12