C or C++ because writing game emulator requires lot of hardware power. This forum is not good for asking such stuff. Join PCSX2.
PCSX2 Playstation 2 emulator - News
You'll find real help regarding emulators there.
Hi guys,
So I'm looking for a new programming language to start learning but can't decide which one to pick...
I want to be able to eventually write server applications using that language (game servers/ emulators) so I know something like VB ain't gonna do the job.
I've looked at C/C++ which obviously would be best choices due to sheer power I'd get however learning and developing curve seems to be too long D:
Also I don't really like languages with dependencies like the whole .NET thing or JVM hence C# and Java ain't gonna be my choices either :| Well... I'm not sure :<
Are there any other languages powerful enough for writing speed demanding stuff like emulators?
Would Python be any good here? Anything else?
I'm a VB6 programmer with 5 years of experience and about two years of PHP. Also I read several books on C so I know it's advantages and disadvantages .
Knowing that, what would your suggestion be?
C or C++ because writing game emulator requires lot of hardware power. This forum is not good for asking such stuff. Join PCSX2.
PCSX2 Playstation 2 emulator - News
You'll find real help regarding emulators there.
Legen...wait for it...dary
Malbolge is the best for you.
Hardware emulation != software emulation (the latter of which the OP is interested in).
miniMagi (07-30-2011)
Don't emulators emulate the hardware of the system? That's why you can properly emulate dreamcast when you have a graphics card of it's strength or better, While you can't on an integrated card. Even running a PS1 emulator on my integrated had graphical glitches, while none on my main PC with a 1 GB card.
You create an environment (emulating hardware, the game accesses your hardware through the emulation layer, but it still acts like a real one) for a real game to play in, thus you need higher specs for it to run correctly (windows still needs to run too)
Last edited by Auxilium; 07-29-2011 at 06:20 PM.
Sorry for not making myself clear enough, it's just what Fovea said.
I don't intend to write hardware emulators but network software emulators instead.
MMO games consist of two parts, client and server. Obtaining real server files is close to impossible so the only solution is to write piece of software which emulates behavior of real server then fooling client into connecting to that emulator instead of real server.
Now my objective is exactly that, write the emulator..
Certainly, I do.
I'm familiar with the basics of C and C++ like you mentioned, in fact writing something like a socket server/ packet filter is not a problem for me. Trick being that C/C++ require programmer to concentrate too much on low level stuff making development a pain.
I'm looking for a robust solution that wouldn't take as much of my time and allow me to concentrate of my software alone.
Python is way to slow to work in a server environment. Actually, let me rephrase that. It's slow, so its not ideal. It'll work, but you'll need a lot of grunt in terms of CPU power to pull it off in something like Python, an interpreted language.
I don't really see why you dislike runtime environments. I've currently deployed a large corporate network server written in .NET (C#), and it seems to be running well. I don't like Java. Java 6 is broken. Java 7 isn't out yet.
C++ is an obvious choice here, but I'd like to suggest to you Erlang. It's a high concurrency functional language built for large, scalable projects. Originally written for a large telco to manage their ever increasing load and isolate crashing to single nodes, it is the buzz of today's concurrent programming. It's amazing, lightweight and has none of the locks and semaphores that we all know and hate that just end up slowing multithreading down. (Unfortunately, the network had C++ libs, so I had to use C# with interop.). Just a small example. You can spawn 25,000 processes (Erlang equivalent of threads) and run perfectly, while I can't even spawn more than 2,000 threads (with a stack size of 1 byte) on my i7
Which is why I love .NET. Everything is there. You might want to try managed C++, but that won't be compatible with non-Windows OSes.
Again, I suggest C#, or Erlang if you really want to.[/QUOTE]
The power increase you'd get from C++ might be offset, or, even worse, reversed, because of a lack of familiarity with C++ and advanced techniques. Plus, the increased functionality you gain (from more development time by developing higher-level code will be better for your business/software than using C++ when not required merely because "its cool".
Last edited by freedompeace; 07-30-2011 at 04:11 AM.
miniMagi (07-30-2011)
Erlang? I'll take a good look at it.
And C#.. almost everyone I came across suggested it and described it in good light :P
Besides if I were to write an emulator it would most likely be running on windows platform anyways. To be honest I don't even know the reason I don't like it.
Just to save myself some time... Could you suggest a good learning source for Erlang and C#?
I think its a godsend. It's sped up my development so much, and I love the descriptive compiler errors! Everything from cryptography to network to file access libraries are available. And Mono means that it'll run on Linux, Mac and even Android and iOS!
Wait a minute. If you know VB, then use it. VB runs on the same thing that C# does (.NET runtime), and has the same features, same compiler and same IL output. What's wrong with it, especially since you have 5 years experience?
As for Erlang, there's Learn You Some Erlang for Great Good!
I missed this part.
VB is completely capable of doing what you need. It's very powerful, though I (personally) hate the syntax and style. It is as powerful as C#, and perhaps more so than Java.
Last edited by freedompeace; 07-30-2011 at 07:22 AM.
The amount of "threads" (Erlang "threads" are more like fibers) that you are able to create is irrelevant as the correct pattern you should be using is the Thread Pool pattern. Simply spawning many threads is not efficient.