Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 16 Feb 2000
Offline Last Active May 18 2016 08:31 PM

#4991703 Best game engine for MMORPG?

Posted by on 19 October 2012 - 01:21 AM

Unity only provides a Windows-based editor (for now), but can export game clients for multiple platforms.

Just a quick correction on this. Unity actually started as a Mac-only editor (and only had Mac support for years) but with release 3.0 they built a cross-platform solution and the editor now has both Mac and Windows versions.

#4990571 Being an Investor - Paying Programmers/Artists

Posted by on 15 October 2012 - 06:55 PM

I just wanted to add in that if you are looking at producing a game with a group that lacks the relevant skills (either programming, art, design) at a professional level it is going to be extremely hard for you until you find a very competent lead programmer and lead artist that you can fully trust in making decisions, time estimations, etc. Also note that on average to build an iOS game that just breaks even has a cost of roughly 100-150k these days and much higher... and that is with at least some talent/skill being in-house (i.e. programming or art being done by a founder), the costs will be much higher if you need to put together a team and build things from the ground up.

#4989633 Texture as background for framebuffer

Posted by on 12 October 2012 - 07:14 PM

I would think the easiest (and fastest) way would be to just take the background image and put it on a quad and render it using an orthographic camera before rendering the 3d components of the scene in perspective. Unless I am not fully understanding what it is you are trying to do.

#4988932 Bit Flags vs. Boolean

Posted by on 10 October 2012 - 08:00 PM

One example of a performance benefit would be doing something like render queue sorting based on a bitfield. It would be much better to sort based on a single field rather than a bunch of single flags.

#4988153 Is memory management a must have?

Posted by on 08 October 2012 - 05:44 PM

That sounds like the worst kind of micro-optimization. If you're worrying about things down to individual bytes and cycles, then you're worrying about the wrong things. There's rarely meaningful performance gains to be had from that kind of optimization.

I wouldn't call it a micro-optimization at all but rather a design issue and one that is becoming more important every year. There are two issues at stake, the first being the fact that fetching from RAM is slow and will continue to get slower. Therefore one of the most important issues is how you fetch and cache the data to operate on as there is really no reason not to do this... it usually makes the code much easier to read. On current generation platforms (and likely future) it is extremely important as you can't afford to DMA a bunch of data that you don't need to work on, etc. Therefore I wouldn't call this the "worst kind of optimization" but rather "the best kind of design".

Also note when data is separated out and designed like this it usually goes hand in hand with being able to parallelize operations much easier. You aren't passing a large object with the kitchen sink inside (where realistically anything could be called/changed)... you are able to pass large contiguous blocks of memory that hold specific pieces of data to be worked on.

#4985221 Is memory management a must have?

Posted by on 29 September 2012 - 07:52 PM

I think what he meant was having an array of structs where each one has five integers. If the data is not operated on in the same functions then you will be fetching structs of five ints, whereas if you kept a struct of related arrays instead than you would prefetch only the relevant data resulting in much less cache misses as you have left the cache warm.

For example:
[source lang="cpp"]struct Unit{ vec3 transform; int32 other_data; int32 more_data;};std::vector< Unit > units;[/source]
would perform much better as:
[source lang="cpp"]struct Units{ std::vector< vec3 > transforms; std::vector< int32 > other_datas; std::vector< int32 > more_datas;};[/source]

When doing something like say updating transformation matrices.. because instead of fetching other_data and more_data along with the transform like in the first example you are able to only fetch the needed transforms resulting in less cache misses.

#4985003 Cross Platform .net development (question about mono)

Posted by on 29 September 2012 - 04:54 AM

True true. I was just wondering if there *is* any differences in the speed between the two platforms?

There definitely is but it is really dependant on which platform it is running on, what parts of the framework you are using, etc. For example on Windows I personally have not seen Mono outperform the .Net framework (other than in irrelevant micro benches using things like Mono.SIMD), meanwhile Mono running on Linux can be faster in many cases as there is more than one variable. There used to be a large difference in things like GC before Mono implemented the generational collector, etc. Also for math using something like Mono.SIMD for various problem domains can give better performance the the actual .Net framework considering it is providing an additional feature set.

#4984882 Want to make RTS strategy game, good starting point...?

Posted by on 28 September 2012 - 04:14 PM

I also, find Unity 3D game engine and I find that I could programming there in C#, but again it doesn't have enough support for c#.

I'm guessing by support you mean tutorials and examples (rather than meaning language/library support)? I actually found there to be a massive amount available (just look in the tutorial section) and there are also a lot of books to bring you up on the basics.

All examples are written in Javascript...maybe even it don't support to write RTS strategy in it?!

As I mentioned there are a lot of C# examples available right on the Unity site and in other places. You can definitely use the Unity to build an RTS as I prototyped one in pre-production in under two weeks when testing which technology we wanted to use going forward.

#4984859 #pragma once

Posted by on 28 September 2012 - 03:08 PM

3) By using #pragma once you are not being "portable". That means your program is going to work only on windows, on the compiler that comes with visual studio (cl).

Slightly incorrect. Quite honestly I can't think of a single compiler worth using that doesn't respect #pragma once... and I've used it with GCC and Clang all the time. The reason I say "slightly" is because on some oddball obscure platform with a strange compiler there may not be support for it, and that is when you need to use the header include guards instead.

#4984092 C++ and OpenGL

Posted by on 26 September 2012 - 02:11 PM

Not even just a commercial game... but finishing any type of game at all. I strongly recommend using an existing engine to people when they are more interested in the game design and focusing on the gameplay, because the majority of people that decide to start from scratch never even come close to having something that resembles a working game.

#4983986 My Philosophy

Posted by on 26 September 2012 - 08:29 AM

It is currently impossible to purchase time with money... therefore make sure you spend your time wisely rather than trading it for something that can be accrued easily. I've always lived by that rule and will only work on projects that I find interesting and that have great opportunities for learning new things.

#4982572 [iOS] Drawing Anything Causes Terrible Performance

Posted by on 21 September 2012 - 10:40 PM

Are you using any of the GLSL commands that disable optimizations for depth buffering/tiling at all? Calling discard in a shader is a quick way to drop from 60 to 30 in a single call.

#4969744 Anyone want to help me choose a framework for some tools I want to write [Win...

Posted by on 14 August 2012 - 11:41 PM

You could always take a look at wxWidgets which is lightweight in comparison to Qt

#4967985 Isometric Hex Picking

Posted by on 09 August 2012 - 11:58 PM

I'll certainly be experimenting with this method tomorrow but I've had mixed experiences with Canvas' getPixelData() function.

If it turns out to be slow you could always use the equivalent technique but as an array (i.e. just assign each color a number and build an array that you embed as an include), that way the only cost is a very quick array index lookup.

#4966488 Macs vs PCs?

Posted by on 05 August 2012 - 05:26 PM

Everyone here uses a Mac since we do all cross platform stuff and with a Mac you can install Windows 7 and then boot into either OS.