Jump to content
  • Advertisement
Sign in to follow this  
bset

Which to develop for first, C# or C++, cross-porting

This topic is 3002 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all,

I've been doing some technical side research for a potential game project I may be starting with a few friends. This may end up being a serious endeavor so I am doing my best to approach it from a business standpoint and I have been having some difficulty deciding on which language to use to get cheap access to the largest possible market.

Regarding this there are two competing markets that I could feasibly target this game for:

1) XNA Studio in C#, target development for Xbox Live
2) C++ direct code, ideally multi-platform, for Steam

As far as what I have been able to discover regarding Steam distribution, it must be integrated to the code via C++, and additionally, is a better candidate if it is multi-platform. In contrast, compiling via XNA for xbox360 seems to require C#. If possible it would be best to target both markets in the event I have difficulty getting published on one. This means I should develop for one market first, then port to the opposing language and publish on the other.

Given all of this, what I am looking for is some advice on what to develop first, and how to keep the code easy to port. It is my inclination that it would be easier to develop for XNA first and port back to C++ later since there seems to be difficulty with compiling on xbox360 when just using wrapped code. This could, however, be entirely wrong. If anybody has some insight into this I would really appreciate it. Thanks in advance.

Share this post


Link to post
Share on other sites
Advertisement
For your situation i think i would recommend C#

1) C# is easier to learn than C++ as a new programmer (if you and your friends don't have much programming experience which is sounds like)

2) As you noted, you can make C# games with XNA to release on the 360. The PC game world is kinda dying so getting on conole could be a good win for your sales. You can do C++ to get onto the 360 but that will literally cost you about 30,000 - 40,000$ when all is said and done (!!!). The cost of devkits and submissions arent cheap!

3) It wouldn't be a huge problem to port your game from C#/XNA to C#/DirectX to make it work on windows too and be able to put your game up on steam.

4) If your game can get good enough performance in C#, it will save you a ton of development costs and save lots of headaches and man hours fixing memory bugs.

my 2 cents anyhow (:

Share this post


Link to post
Share on other sites
Personally I would focus on what platform would be best suited for your game from a business (and indirectly, fun) standpoint.

Share this post


Link to post
Share on other sites
Quote:
Original post by Telastyn
Personally I would focus on what platform would be best suited for your game from a business (and indirectly, fun) standpoint.


This.


Technology is a means to an end. Figure out the game first, then decide what platform it belongs on, and then choose the most efficient technology for development that is available.

You may find that your game makes most sense on the PC with a keyboard and mouse. Or maybe it makes more sense on the iPad with a touch screen. Whatever happens on that front, you don't want to get a few months into development and realize that the game would really be a lot better if it were on a different platform. That's just a killer mistake.

After the platform(s) question is settled, focus on what you can use that'll be most effective for getting the job done. If you already know Foo Language and it's supported by at least one of your target platforms, write it in Foo - for any value of Foo. Having to learn new technology and a new platform and deploy a project is tough; even as a veteran programmer I want to avoid that kind of situation for myself at all costs. The fewer unknowns the better your odds of success.


Last but not least: remember that if nobody wants to play your game obsessively, it doesn't matter if you built it using sticks and ping pong balls.

Conversely, if everyone wants to play your game obsessively, it also doesn't matter if you built it using sticks and ping pong balls.

Porting across platforms is pretty straightforward usually, and once you have a game worth porting, the issue of what technology you use becomes pretty much irrelevant. If you aren't talking about a multi-million-line-of-code monstrosity, the overhead of rewrites on new platforms is fairly trivial compared to the potential of new market access.

Share this post


Link to post
Share on other sites
Quote:
Original post by bset
As far as what I have been able to discover regarding Steam distribution, it must be integrated to the code via C++, and additionally, is a better candidate if it is multi-platform.
As far as Steam goes, there are already a few games available that use XNA Game Studio on Steam (see Lucidity and Blueberry Garden), so it's definitely possible to distribute through Steam without native code, however I don't know any details involving the Steamworks APIs, though I assume you could make an interop layer with P/Invokes or C++/CLI that should work just fine.

Share this post


Link to post
Share on other sites
XNA doesn't require you to use C#, it's just the only language currently supported. As stated above C#/XNA allows you to develop for both platforms. However I feel that in asking this question you're getting ahead of yourself. Develop a prototype first, in the language that you feel most comfortable with. From there after investing some time on the project you'll have a better viewpoint to decide what language to continue development with.

Share this post


Link to post
Share on other sites
Well it would seem my suspicions of developing in C# first are re-affirmed. Indeed, as was mentioned above, I am inclined to use C# as the target language because some team members lack significant experience, and others are from a more java-oriented background. Because Microsoft XNA code distributed via Xbox Live is so attractive, I am further inclined to take this route. The only concern I have been encountering is that early market research I have set up shows that Steam is by far the preferred client for digitally distributed software and I want to ensure my options are fully open. I would like to more readily plan for Steam distribution but public information on Steam publishing and the Steamworks SDK is scarce.

For now I am simply trying to get my business plan in order. Publishing channels, languages, genres, concepts, and market research/testing. So anything that makes the project easier to deal with is what I am hoping for. Right now that seems to be to target Xbox Live but I am very open to alternative suggestions (and other tips/tricks).

Share this post


Link to post
Share on other sites
Quote:
Original post by bset
I would like to more readily plan for Steam distribution but public information on Steam publishing and the Steamworks SDK is scarce.


Have a look here. Might be useful.

https://partner.steamgames.com/

FWIW, I think you're making the right decision going with C#. If you architect your code well, you could probably use OpenTK to get your game on OSX.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!