Jump to content
Sign in to follow this  
ric

.NET (C#) and the Arma 3 Game engine

Recommended Posts

Could the core of the Arma 3 game engine been written in .NET? and would the development time have been cut in half with the quality remaining the same?

Share this post


Link to post
Share on other sites

it could. if they "the devs" where retarded. and started writing it from scratch again,

But no one in their right mind would write a game like arma in .Net.

you can use .Net to create extensions for the game tho.

Share this post


Link to post
Share on other sites
it could. if they "the devs" where retarded. and started writing it from scratch again,

But no one in their right mind would write a game like arma in .Net.

you can use .Net to create extensions for the game tho.

would there be performance issues? i understand .NET is great for business aps but not really for games I was hoping one of the Devs might give me a quick break down on the limitations of writing a complex game in .NET

Share this post


Link to post
Share on other sites

I'm no expert but had fun messing around with MOGRE for a few months, for a hobbyist like myself C++ is just to hard to get back into, :p I rather be licking windows.

anyway check out MOGRE and OGRE, it's a open source 3d engine.

Edited by Squ33z3

Share this post


Link to post
Share on other sites

Nope, it could not. (not for so complex 3D game)

C#, as a higher level language, (is similar type as java) is in general quite slower then c++. (so suitable for web services, web apps and rapid application development)

c# code is by compilation translated into Intermediate Code, that is at runtime loaded, compiled into assembly and executed.

Slowness is caused mostly by that loading, and miscelanious program structures checks and checks for overflows at runtime that do not exist in c++

(it's not possible to overwrite piece of memory that belongs to other program so easily as in c++)

But in my opinion, would be more suitable for programming extensions then chosen java - because is easier to learn and use,

but for engine and all lower level stuff there is no other option then c++.

Edited by yarex

Share this post


Link to post
Share on other sites

From my small point of view (hobby programmer), it could be done, using wrappers and shit, but the quality?, no. Barely nothing can surpass C++ in speed. (only ASM or a few others i guess)

Don't get me wrong, i love C# and .NET, i've been 'deving' with it for small winapps and it's great. But for a game of this magnitude (Arma series) all speed ('quality') is welcomed.

But in my opinion, would be more suitable for programming extensions then chosen java - because is easier to learn and use,

huh? Java is pretty easy. In fact is very similar to C#, i don't see the difficulty. Java is a very good choice for scripting.

Edited by Vixente

Share this post


Link to post
Share on other sites
Shouldnt this be in wishes and ideas thread?

Nah. why make a wish that never will come true.

this thread is just as pointless as the 99% others in this forum section.. one more dosent hurt :p

Share this post


Link to post
Share on other sites
From my small point of view (hobby programmer), it could be done, using wrappers and shit, but the quality?, no. Barely nothing can surpass C++ in speed. (only ASM or a few others i guess)

Don't get me wrong, i love C# and .NET, i've been 'deving' with it for small winapps and it's great. But for a game of this magnitude (Arma series) all speed ('quality') is welcomed.

huh? Java is pretty easy. In fact is very similar to C#, i don't see the difficulty. Java is a very good choice for scripting.

Language is similar (.net has better language extensions that have no equivalent in java (linq, etc) ), but the libraries in Java from my point of view (.net developer) are very messy.

When i compare them to .net libraries (their naming conventions, etc.) then .net is a clear winner.

Configuration stuff in java is a pain.

Share this post


Link to post
Share on other sites
Language is similar (.net has better language extensions that have no equivalent in java (linq, etc) ), but the libraries in Java from my point of view (.net developer) are very messy.

When i compare them to .net libraries (their naming conventions, etc.) then .net is a clear winner.

Configuration stuff in java is a pain.

No way. There's at least 100x more free stuff for java. Define messy maybe? Maybe you're just bad programmer if naming convetions and configuration stuff is hard for you.

On topic: It's stupid. BIS should've done it in LISP.

Share this post


Link to post
Share on other sites
A C# fan here, mostly because of Intellisense and auto-formating. It does make life easier.

I think most of that is part of most modern IDE's for most high level languages, incl Java?

Share this post


Link to post
Share on other sites
I think most of that is part of most modern IDE's for most high level languages, incl Java?

Yes, intellisense or autoformat has nothing to do with the C# language itself. It's just the IDE (Visual Studio). Eclipse IDE (Java) has some sort of helper, but not as good as VS.NET.

Share this post


Link to post
Share on other sites
I think most of that is part of most modern IDE's for most high level languages, incl Java?
Yes, intellisense or autoformat has nothing to do with the C# language itself. It's just the IDE (Visual Studio). Eclipse IDE (Java) has some sort of helper, but not as good as VS.NET.

Sure. It's just that in my experience Intellisense works better with VC# than VC++. Since C# is Microsoft's own design, they have put more love and care in it?

Or do you (people with more experience) feel differently? I like the pretty colors :D. Makes it easier to orientate.

Share this post


Link to post
Share on other sites
No way. There's at least 100x more free stuff for java. Define messy maybe? Maybe you're just bad programmer if naming convetions and configuration stuff is hard for you.

On topic: It's stupid. BIS should've done it in LISP.

Java might have more libraries out there, but it doesn't mean it has better ones. I primarily code in Java and C# these days and I definitely prefer C#.

By naming conventions, I think he means all the depricated functions/classes that were left in java to preserve backwards compatability, but some coders still use them and it's annoying as f***

Share this post


Link to post
Share on other sites
No way. There's at least 100x more free stuff for java. Define messy maybe? Maybe you're just bad programmer if naming convetions and configuration stuff is hard for you.

On topic: It's stupid. BIS should've done it in LISP.

Dont be personal, if you know nothing about me and my programming experience.

To be more accurate, i as talking about default java namespaces and their naming conventions and not comparing how many 3rd party libraries are there out for c# vs java.

I;v stated, that personally don't like how default java libraries are being organized. (and i don't attack you if you do)

I can provide example and list of advantages (and disadvantages of .net over java) but i see no reason to do that, because it's easy to google it.

So if you don't like my personal preferences, it's your problem.

Share this post


Link to post
Share on other sites

Only C and C++ to make a game! You cann't make better with dot net who was paye for use !

netbeans and Eclipse or CodeBlock and notepad ++ (seround the right mention to BIS dev only) are free !

Share this post


Link to post
Share on other sites
checks for overflows at runtime that do not exist in c++

That's actually not true. C++ has overflow checks. Unless disabled.

But in my opinion, would be more suitable for programming extensions then chosen java - because is easier to learn and use,

but for engine and all lower level stuff there is no other option then c++.

Java was the worst decision of a language to include in ARMA 3, and it hurts thinking about the fact that that piss poor excuse of a language has infested this marvel.

They should have went with C#. (I don't care if it has similarities to Java. They're far from equal.).

Hell, if they would just make a C++ interface to all the script functions, I'd make a C# wrapper, in a OOP style.

Though there's at least pre-compilation possible; http://msdn.microsoft.com/en-us/magazine/cc163610.aspx

Even though it's possible to compile a C# app to native code, the app will still make calls into the .NET Framework, which will still use JIT compilation.

Edited by MulleDK19

Share this post


Link to post
Share on other sites
That's actually not true. C++ has overflow checks. Unless disabled.

False.

Java was the worst decision of a language to include in ARMA 3, and it hurts thinking about the fact that that piss poor excuse of a language has infested this marvel.

Blah blah blah... Be MS employee somewhere else please.

They should have went with C#.

BIS developers are hopefully smart enough.

I'd make a C# wrapper, in a OOP style

I'm 99% sure it would be very bad interface.

Even though it's possible to compile a C# app to native code, the app will still make calls into the .NET Framework, which will still use JIT compilation.

Nonsense.

Share this post


Link to post
Share on other sites

C# is a major pain from a perf standpoint. Every object contains a pointer to its type. Garbage collection is mandatory for all so-called "managed" data. Last time I saw GC'able heap allocation during the render loop in MonoGame when using the VS Ultimate profiler.

JVM is nice because it can run Scala.

Share this post


Link to post
Share on other sites
False.

*bla, blabla, blablabla*

Wow. You really have no idea what you're talking about.

Disassembly of a function written in C++:

push ebp
mov ebp,esp
sub esp,084h
;Here it clearly performs an overflow check (I've put -> at everything that has to do with the overflow check)
-> mov eax,dword ptr ds:[0193000h]
-> xor eax,ebp
-> mov [ebp-4],eax
;<function code here>
-> mov ecx,[ebp-4]
-> xor ecx,ebp
-> call 001910B8
mov esp,ebp
pop ebp
ret

Share this post


Link to post
Share on other sites

@MulleDK19: Pasting assembler will not make your claims true. It cannot prevent heap overflow. And It's still completely different from memory management in interpreted programs.

Wow. You really have no idea what you're talking about.

No, you. Time to explain that native code & JIT non-sense.

Share this post


Link to post
Share on other sites
@MulleDK19: Pasting assembler will not make your claims true. It cannot prevent heap overflow. And It's still completely different from memory management in interpreted programs.

You're right. It has no heap overflow protection. And I never claimed so. I just said it has overflow checking. And it has. Never said which kind.

No, you. Time to explain that native code & JIT non-sense.

http://stackoverflow.com/questions/3173116/is-ngen-used-to-compile-net-code-into-an-binary-that-will-not-require-net-fram

http://stackoverflow.com/questions/45702/is-there-some-way-to-compile-a-net-application-to-native-code

http://www.pcreview.co.uk/forums/native-code-compiler-do-you-need-frame-work-run-after-code-has-been-compiled-using-ngen-exe-t1873143.html

Share this post


Link to post
Share on other sites
I just said it has overflow checking. And it has. Never said which kind.

You said it has overflow checks. Be more specific next time please. Also it's not C++ feature.

Even though it's possible to compile a C# app to native code, the app will still make calls into the .NET Framework, which will still use JIT compilation.

I don't need to google to realize that this is non-sense but I'll quote for you most accepted answer from one of the links you posted:

The Native Image Generator (Ngen.exe) is a tool that improves the performance of managed applications. Ngen.exe creates native images, which are files containing compiled processor-specific machine code, and installs them into the native image cache on the local computer. The runtime can use native images from the cache instead using the just-in-time (JIT) compiler to compile the original assembly.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×