Multi platform 2D game engine [closed] - c#

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I am creating a 2D game which I wish to run cross platform (on platforms such as Windows, Mac, iOS and Android as the main targets) and the engine I use needs to be open source.
The main goal is to have the most code portability (possibly through scripting).
I would prefer to do this in C# but using another language is not a massive issue if I have to.
I have considered MonoGame and flash using the Flex SDK as they both claim to be cross platform and open source.
Which one of these would be a better choice considering my criteria? Or would another game engine/library be more suitable?

I would suggest Unity3D. It is a 3D platform. But if you only use 2 dimensions you're good to go. In Unity3D you can write your game in C#, Javascript or Boo.
Unity is free and can export to Windows Phone, Windows 8 App, Windows, Mac, Linux, Android, Blackberry, iOs, Xbox360, Wii and PS3 but for those last 3 you need a developer license from Microsoft/Sony/Nintendo. But the possibility is there.
UPDATE
You had to pay for the ios and android addons earlier. Now they are free:
Today, we’re taking another step on this long road: as of right now,
independent Unity developers will be able to deploy their games to
Android and iOS platforms completely free of charge. Update Unity and
you will find Android and iOS build options (previously basic add-ons)
ready and waiting for you to use.
Source: http://blogs.unity3d.com/
In the meanwhile, support for other platforms has come out (including windows phone, winrt & blackberry). Those are all free. If you want pro features you need a pro license. But most of the stuff you need is in the free version. To compare look at this page.

The engines below allow you to reuse pretty much all your code, only thing you need to change is resolution and touch input/controls from desktop to mobile or the other way around. I would suggest you check out these engines, they are all open source:
libgdx - Uses Java and is almost as fast as XNA, but faster than MonoGame. "Publish your games on Windows, Mac, Linux, Android, iOS and HTML5, all with the same code base." - off their website, anything that can run java, can run your game. Big community so you shouldn't have problems asking questions when you need help and getting it.
Qt-Project - Qt is a cross-platform application and UI framework for developers using C++ or QML, a CSS & JavaScript like language. As of Qt 5.1 you are supposed to be able to build for Android and iOS, allowing you to build for all the platforms you requested. Big community.
Moai - Uses Lua and can deploy to all the platforms you requested. Only downside is the community is pretty small and the docs are a little out of date, but people on irc and forums will usually help you, but the answer won't always be immediate. You also have to build your own hosts to build for the platforms you desire, but last time I checked there were public hosts for all platforms out.
libgdx seems like a perfect fit for you. the performance is amazing, the community is big and it lets you reuse the same code for all platforms, just to name a few. Only downside being it doesn't use C#. Of course you should definitely look into them yourselves and see if they are match for what you want. I wish you the best of luck in your endeavors.

There are a couple of options based on your preferences; I will list a couple of ones I recently come across.
Cocos2d series seem very popular these days. If you think C++ isn't
a problem for you then Cocos2d-X would be an option as it offers a
lot of platforms. Other Cocos2d series might get your attention as
well. I guess there are a couple of versions like HTML5, Javascript,
Python. etc but i think only cocos2d-x is cross platform.
Unity3D(C#, Javascript, Boo) seems as an option but it's not open
source, as well as UDK(UnrealScript) also same, but if you think to
buy a license they offer source code I guess
Flash also can be a good option, as you mentioned. It uses AS3 which
is an OOP language and can be very useful if you are a beginner.
And ImpactJS offers a lot of platforms also, it uses HTML5, you can
check here http://impactjs.com/
The list can be longer and longer, and depends on your needs. You should specify your needs clearly like; how much deep you wanna go, which platforms are most important for you? etc.
Good Luck

You can try this: http://www.appgamekit.com/ (AGK)
Code in c++, but working perfectly. A very simple engine.

Related

Cross Platform Desktop Application - Windows+Mac+Linux [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I'm building an application for multiple desktop platforms: Windows, Mac, and maybe later for Linux.
I was wondering which programming language and IDE combination would be the best for me:
Programming language need to be whether C# (preferred) or Java.
Core libraries must be shared between all platforms, means all platforms must link to a single core library (by library I mean a list of classes and functions).
Windows and Mac are in priority, Linux app is for future plannings.
Design of the app is completely custom, it doesn't follow any guidelines of each platforms.
I'm stuck between these three solutions:
Use Xamarin.Mac + Visual Studio for Windows and link the core classes between them.
Use GTK# for the whole project and compile multiple builds for each platforms.
Use Java for the whole project and compile multiple builds for each platforms.
For #2 and #3, I need an advice that which language is more suitable for me, considering the design of my application. I mean, which one has a better GUI building ability for my goal?
BTW GTK# uses different libraries for each platforms, so that should be an clutter for my core architecture, or not?!
Three years later and Javascript is now also a strong contender in this debate.
There are multiple options within the space.
https://electron.atom.io/
https://github.com/nwjs/nw.js/
And others
Even Microsoft has shipped Visual Studio Code, the cross platform version of their development environment, which is written in Javascript.
What is the Visual Studio Code editor built on
The benefits include utilizing the many available web libraries, and building/using your web development skills.
This sounds like a job for Xojo or something similar: http://www.xojo.com
Mac, Windows, Linux builds with easy GUI design and native apps. Custom UI easily done also, and you'd then have one code base for all three platforms. You can download and use the software for free to develop and test, only requires a license once you decide to build your app.
You can also conside Livecode
Livecode: http://livecode.com
For any platform except web, it is opensource and it includes mobile targets as well, if your code is flexible enough to not being C# or Java.
An option is to build the core logic in a compiled library using C# and GUI independence and then plug it to livecode, leaving the UI work for that tool.
"GTK# uses different libraries for each platforms", do you mean different rendering back ends (such as X11, Cairo)?
You only need to build your GTK# app once. However, you do have to bundle the GTK# runtime (which is different for Windows and Mac) with your app. Banshee is a good example you can follow.
Probably your best bet is to use Nevron Open Vision. It is a cross-platform, C# based User Interface Platform, that implements most of the controls you need to build enterprise-ready applications. It is the framework behind MyDraw (www.mydraw.com) - a professional drawing program similar to Visio. MyDraw is built completely with Nevron Open Vision and does not require any other third-party libraries. We mainly develop it under Windows and just compile it to Mac. Soon we are going to add support for Linux and WebAssembly hosts.
Microsoft just launched .NET MAUI, a cross-platform GUI framework that builds on Xamarian.forms.
As we consider what building device applications will look like in a unified .NET, we see many devices across multiple platforms used, from Android and iOS to Windows and macOS. To address this need we are excited to announce a new first-class UI framework for doing just that: .NET Multi-platform App UI, affectionately call .NET MAUI.
This seems to meet all of your requirements. They do not explicitly mention Linux in their article, but claim to support it in the description on the Github Repo.
It depends on the audience of the app: Consumer mass market or business/IT
If its mass market consumer facing
Electron or native UI, perhaps with shared non-UI code. Visual Studio Code was made with Electron, for example (last I checked). Google Flutter is a new entrant worth evaluating. Dropbox is Python (or used to be). It is a lot of work (a) getting Python packaged properly for smooth x-platform install, and (b) GUI work will take a long time. Sadly, for mass market consumer apps (not utilities for IT people but beautiful designs for the masses like Dropbox, Skype) you will be spending a ton of time getting the installation system to work and getting the app to look and feel appropriate. This is an extremely time consuming endeavour no matter what path you take.
Consumer: Java? I don't think Java is a great fit for consumer desktop although I could be wrong. There are some Java packaging systems that are leaner/all bundled in. I'd also say JVM software companies tend to go under (more on this later). FreeMind the free mind mapper, is a good example of what can be achieved in Java.
Consumer: .NET? Yes, for the Windows side. Then use something native for Mac and shared libraries for non-GUI code. There is ".NET Core" aka Mono but its not fully matured at this time for Mac. Mono has been around for over half a decade and I haven't seen it mature for a consumer app. Ask: How many .NET Core apps are in the Mac app store? I hope it gets better but as of this writing (2020) there's very few notable ones.
Business app or IT tool
If its a basic business app or utility where a basic UI is okay, I'd evaluate Xojo and/or LiveCode mainly for comparison sake. Xojo is fairly close to .NET. Google Flutter as well since it's up and coming. By the time you read this, Flutter may be the best choice.
B2B: Java? This is a pretty tried, tested and true solution for "heavy" enterprise apps. You might not have end-users love you given Java apps tend to eat up memory. But for enterprisey apps the main concern is that the very intense business logic will work. For IT tools, it depends. If it's a 3-screen utility program, avoid Java. If it's a complex ERP then Java is good. Remember to look around for different packaging tools to avoid consumer headaches with the JVM. Again, one Java desktop app I like is Freemind. It's a great example of making a reasonable desktop app in Java. I have used it in both Windows and Mac and it's great. You can also look at Kotlin or Groovy (for test cases) which compile to Java byte code.
B2B .NET? There is so much to unpack here. The key is, in my biased view, .NET Windows desktop development is about 2X-4X faster development time than Windows Java desktop development. From making the GUI, to better code completion, to faster compile times, to less packaging and install snags. That said, at the time of this writing the ".NET Core" or Mono are pretty thin for MacOS. I really, really hope this changes. But I've been waiting years for Mono or .NET Core to provide a full suite for MacOS without the limitations and it hasn't yet happened. If it's an enterprise app, you might be able to get away with using .NET Core for Mac. But please first build a basic .NET Core "hello world" app with all the control/libraries you want to use. Then try building an installer for it on MacOS, and find someone random with a Mac to see if it actually installs and runs. You may find you're struggling in this area today (although I hope it gets better, it hasn't for years).
Overall Notes on Cross Platform
If this is a smaller app which doesn't need a fantastic UX and super-deep OS integration, then I'd consider Xojo or LiveCode, perhaps for the UX elements. Like #merlucin said, you can write the core logic in something shared- perhaps C#, python, etc.
Here's why- Xojo and LiveCode have been around for 10 years now. They are more about keeping things consistent. Whereas I find .NET and QT changes all the time. You have a lot of costs of keeping up with the Joneses and maintaining installers. So for a small app or utility- an XML editor, IT helper tool, Xojo or perhaps LiveCode will help you get there sooner.
When you hit the build button on Xojo, for example, it literally makes 3 executable files for Windows, Mac and Linux. Compare that to the madness of packaging a cross platform Python app, or even packaging a .NET app for Windows, to be honest.
The tradeoff is these tools- Xojo and LiveCode often end to be missing a few critical things you need, requiring a bit of a hack. You can read around their forums. Xojo is a bit like .NET although LiveCode is a different programming paradigm entirely based on "stacks".
Keep in mind developer happiness too. Many developers wont want to code in Xojo or LiveCode because they are lesser known languages. So ensure you get buy-in. What happens if you get laid off and have 5 years of experience in Xojo? Hmm.
In your evaluation, no matter what you choose-- you must compile a basic GUI app in the platform you're evaluating and get 3 people to install it correctly on a Mac. You'll be shocked at the libraries and madness needed. Especially if you're a web developer, you'd see that just maintaining installers is a ton of work across 3 platforms. Never mind GUI consistency.

Difference between XNA, DirectX and Monogame, SharpDX [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I have been learning C# for a time now. I basically come from a non-developing background (means I dont know the actual working of different programming tools). I just started learning Monogame but few things confused me.
Firstly it says that Monogame is open-source implementation of XNA. What does it mean?
-that it makes XNA open-source
-or takes features of XNA and implements it itself but with same function names etc. as XNA
-any other
And is it allowed and legal? If yes, can I copy any app in any app store and make my own version? What needs to be different for it to be legal?
Secondly when I installed Monogame, SharpDX was also installed. When I searched about it, I found that SharpDX is managed DirectX (I have never worked in DirectX). What is the link between Monogame and SharpDX (or XNA and DirectX) and cant I use monogame or SharpDX separately? And what does it mean by managed DirectX?
Thirdly are there more cross-platform C# frameworks other than those provided by Xamarin? I cant find more.
What does it mean?
Monogame is another implementation (same interface, different underpinnings) of XNA
And is it allowed and legal?
I don't know XNA's terms offhand, but typically Microsoft allows duplicates of this sort (see the original Mono). You can do research on the license for XNA if this concerns you.
Can I copy any app in any app store and make my own version? What needs to be different for it to be legal?
I am not a lawyer (especially not a copyright lawyer), a couple of things to steer you in the right direction, mostly it boils down to copies ideas is fine, copying anything concrete is not.
Making a match 3 game - Okay
Using images from Candy Crunch - Not okay
Decompiling Angry Birds and using their physics engine directly - Not okay
Playing around with Angry Birds and duplicating the physics engine - Okay
So if you wrote it and were inspired that is fine, but if you take it that is not fine. Also note that there is a significant grey area when it comes to decompilation so I wouldn't do anything related to that if you want to sell your product. (Or even put it on an app store)
On a less objective note, don't try and copy something directly, if it is popular you won't replicate that success just by being the same. Find an idea you like and tweak it to make it more interesting at the least.
What is the link between Monogame and SharpDX (or XNA and DirectX) and cant I use monogame or SharpDX separately?
Monogame probably uses SharpDX on Windows and/or XBox (both of which have DirectX as an option). SharpDX is an externally maintained managed interface to DirectX. Rather than redoing that work they use it. Whether you need it depends on your platform. It would be useless on Android or iOS for instance, since neither of those platforms supports DirectX.
Thirdly are there more cross-platform C# frameworks other than those provided by Xamarin?
You need to define framework and probably cross-platform if you want an answer to this question. For instance Mono is basically the only cross-platform framework by using the .NET Framework definition of framework.
Firstly it says that Monogame is open-source implementation of XNA. What does it mean? -that it makes XNA open-source -or takes features of XNA and implements it itself but with same function names etc. as XNA -any other
Let's start at the beginning. To fully answer your questions you'll need to understand a bit of history.
Firstly, XNA is a set of tools provided by Microsoft that facilitates video game development. XNA is based on the .NET Framework, with versions that run on Windows, Windows Phone and XBox.
MonoGame is an open source implementation of XNA with the goal of making it truly multi-platform. It allows existing XNA developers to port their games to many other platforms using nearly identical code. So while developers used to be restricted to only Microsoft platforms they can now also deploy games on iOS, Android, Mac OS X, Linux, Windows 8 Store, Windows Phone 8, PlayStation Mobile and OUYA.
The other important thing to realise is that Microsoft is no longer supporting XNA in the future. MonoGame has become a very attractive replacement for XNA developers even for Microsoft platforms.
And is it allowed and legal?
That's a good question. While it may seem on the surface to be potentially dangerous ground, and I'm no lawyer, there appears to be plenty of evidence that Microsoft is okay with it.
For example, Skulls of the Shogun was developed using MonoGame, published by Microsoft and released on Xbox, Windows 8 and Windows Phone 8.
There are also some other examples, like TY the Tasmanian Tiger and Lee Stott (Microsoft UK Evangelist) talking about MonoGame.
can I copy any app in any app store and make my own version? What needs to be different for it to be legal?
No. You can't just copy an existing app. You'll quickly run into copyright and trademark law infringements if you do this. Even if you create a game with too many things similar to an existing game it can upset people and you may find yourself in some trouble. Believe me, I've had to deal with this before and it's not fun.
That said, copyright law can't prevent you from making your own games if you have some originality and creativity.
"Copyright does not protect the idea for a game, its name or title, or the method or methods for playing it. Nor does copyright protect any idea, system, method, device, or trademark material involved in developing, merchandising, or playing a game. Once a game has been made public, nothing in the copyright law prevents others from developing another game based on similar principles. Copyright protects only the particular manner of an author’s expression in literary, artistic, or musical form." - http://www.copyright.gov/fls/fl108.html
If you think you might be at risk I suggest doing some reading.
Secondly when I installed Monogame, SharpDX was also installed. When I searched about it, I found that SharpDX is managed DirectX (I have never worked in DirectX). What is the link between Monogame and SharpDX (or XNA and DirectX) and cant I use monogame or SharpDX separately? And what does it mean by managed DirectX?
DirectX is an API for handling tasks related to game development on Microsoft platforms.
SharpDX is a layer that sits on top of DirectX to allow it to be used in managed languages like C#.
OpenGL is an API for handling tasks related to game development on non-Microsoft platforms.
OpenTK is a layer that sits on top of OpenGL to allow it to be used in managed languages like C#.
MonoGame uses SharpDX on Microsoft platforms and OpenTK on non-Microsoft platforms.
(actually, it's not that simple but you get the idea)
Thirdly are there more cross-platform C# frameworks other than those provided by Xamarin? I cant find more.
Xamarin has pretty much cornered the market in the multi-platform C# area. The only other option I can think of is Unity but it's not really a framework, it's a full game engine.

Using OpenGl with C#? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Is there free OpenGL support libraries for C#? If so, which one do I use and where do I find sample projects?
Does C# provide classes for OpenGL?
OpenTK is an improvement over the Tao API, as it uses idiomatic C# style with overloading, strongly-typed enums, exceptions, and standard .NET types:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
as opposed to Tao which merely mirrors the C API:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
This makes for harder porting but is incredibly nice to use.
As a bonus it provides font rendering, texture loading, input handling, audio, math...
Update 18th January 2016: Today the OpenTK maintainer has stepped away from the project, leaving its future uncertain. The forums are filled with spam. The maintainer recommends moving to MonoGame or SDL2#.
Update 30th June 2020: OpenTK has had new maintainers for a while now and has an active discord community. So the previous recommendation of using another library isn't necessarily true.
I think what #korona meant was since it's just a C API, you can consume it from C# directly with a heck of a lot of typing like this:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
You unfortunately would need to do this for every single OpenGL function you call, and is basically what Tao has done for you.
Tao is supposed to be a nice framework.
From their site:
The Tao Framework for .NET is a collection of bindings to facilitate
cross-platform media application development utilizing
the .NET and Mono platforms.
SharpGL is a project that lets you use OpenGL in your Windows Forms or WPF applications.
You can OpenGL without a wrapper and use it natively in C#.
Just as Jeff Mc said, you would have to import all the functions you need with DllImport.
What he left out is having to create context before you can use any of the OpenGL functions. It's not hard, but there are few other not-so-intuitive DllImports that need to be done.
I have created an example C# project in VS2012 with almost the bare minimum necessary to get OpenGL running on Windows box. It only paints the window blue, but it should be enough to get you started. The example can be found at http://www.glinos-labs.org/?q=programming-opengl-csharp. Look for the No Wrapper example at the bottom.
I would also recommend the Tao Framework. But one additional note:
Take a look at these tutorials:
http://www.taumuon.co.uk/jabuka/
What would you like these support libraries to do? Just using OpenGL from C# is simple enough and does not require any additional libraries afaik.
Concerning the (somewhat off topic I know but since it was brought up earlier) XNA vs OpenGL choice, it might be beneficial in several cases to go with OpenGL instead of XNA (and in other XNA instead of OpenGL...).
If you are going to run the applications on Linux or Mac using Mono, it might be a good choice to go with OpenGL. Also, which isn't so widely known I think, if you have customers that are going to run your applications in a Citrix environment, then DirectX/Direct3D/XNA won't be as economical a choice as OpenGL. The reason for this is that OpenGL applications can be co-hosted on a lesser number of servers (due to performance issues a single server cannot host an infinite number of application instances) than DirectX/XNA applications which demands dedicated virtual servers to run in hardware accelerated mode. Other requirements exists like supported graphics cards etc but I will keep to the XNA vs OpenGL issue.
As an IT Architect, Software developer etc this will have to be considered before choosing between OpenGL and DirectX/XNA...
A side note is that WebGL is based on OpenGL ES3 afaik...
As a further note, these are not the only considerations, but they might make the choice easier for some...
XNA 2.0 requires a minimum of a shader 1.1 card. While old tech, not everyone has one. Some newer laptops (in our experience Toshiba tablets with Intel graphics) have no shader 1.1 support. XNA simply wont run on these machines.
This is a significant issue for us and we have shifted to Tao and OpenGL. Plus with Tao we have bindings for audio & Lua support.

Home Automation Library [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm a C# developer looking to get into home automation as a hobby. I have done a little research, but was wondering if anyone knows of a good .NET library that supports Insteon hardware. I'd rather use Insteon than X10 due to reliability issues.
My ultimate objective at this point is to have a simple home automation server (maybe lights and climate control) with a secure ASP.NET web application interface. I'm more interested in actually building it and learning about it rather than finding an existing solution.
Thanks for any suggestions or comments.
Edit:
Thanks for the help, everyone.
Does anyone have experience with Z-wave technology? Seems promising - appears to be higher quality hardware, includes a core library, supports .NET, etc. ControlThink appears to have a pretty good controller and SDK.
Here's an interesting application to consider: Stall Status: Know Before You Go
We found there really wasn't much developer support for Insteon unless you wanted to buy their SDK and agree to their rather heavy-handed license agreement. Rather than go that route, we wrote our own .NET library called FluentDwelling and we open-sourced it. You can find a download link, and some get-you-started code samples if you follow that link.
The source code comes with a full suite of unit tests (requires NUnit, also free), so you can add improvements and make changes if you like.
I would avoid X10 like the plague. Between things like modern TV's and power strips, bridged power junction boxes and just plain strange wiring, X10 signals tend to just "disappear" and never get to their destination.
If you really want to give X10 a shot, I've got a box of X10 stuff in the garage that was worth $250+ new and it's all completely useless in my house, so you can have it. Some of it worked in my old house, but it won't so much as turn a light on 2 outlets away where I live now.
X10 is viewed by most modern electronics as "noise" on the line (which, technically, it is) and something to be filtered out rather than passed along or left alone.
I can't remember if it covers the specific technologies you mention but you should definately check out this episode of .NET Rocks. They talk about all the different stuff you can do with home automation and a lot about how to do it. I believe one of the main points was that Microsoft Robotics Studio was a good tool to use, as it uses a lot of the same abstractions as you would otherwise use.
I know it's been a long time since this post was made, however I was wondering if you'd picked a route, and what you've ended up doing with home automation since.
I've been doing this kind of stuff with many of the technologies available, but I've always done it on top of a product called homeseer. .net plug-ins and vb.net and c# scripting can be done on top of this foundation. I've been thinking of rolling my own similar to what you were describing. Any thoughts, tips, decisions you've made etc?
A bit off topic, but listen to the latest episode of dot net rocks, one of the finalists of my .net story built an home automation solution that really made me want to dive into home automation again.
Totally awsome solution.
http://www.dotnetrocks.com/default.aspx?showNum=518
I think this would bee a place to start
insteon sdk
Some research via Google looking for an Insteon SDK only yields stuff from way back in 2005. There's only information on serial port interfaces (no USB) and the only language mentioned is something called DockLight scripting that also looks like it hasn't been updated since 2005.
X10, on the other hand, boasts support for C++, VisualBasic, VB Script, and JavaScript. No .Net listed, but VisualBasic/VB Script likely implies a COM object you can easily import for use in C#. They're also much more USB friendly, and the kit costs 1/4 of the Insteon kit ($50 vs $200).
If you were actually building a product I would understand the reliability concern. But since this is a home project I think you'll have much better luck with X10.
you can try C-bus by Clipsal(schneider) it's free.

C# Desktop Applications? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
In looking at the use of C# in a ISV setting, I'm wondering what prominent C# based desktop apps are out there? I can think of only Paint .NET.
Is C# a good idea for an ISV, or should one stick to more native environments like Delphi or even QT?
Of course any experienced based advise or feedback would be appreciated.
Yes, C# can be used quite effectivly to build applications. In regards what applciations are out there, what are you looking for? Big apps, little apps?
I know of a big app that is built on the .NET framework (unsure if C# or VB) and that is Quickbooks.
Developing a Desktop applications in C# is great. Its not just for Web Apps.
WinForms are going to save you huge amounts of time. It really is a first class citizen when it comes to desktop windows development. If interop is a problem you can always use P/Invoke and COM object wrapping that VS does for you.
Done right, it will be a breeze to maintain and update when the client changes their mind on what they want.
Yes, the framework needs to be on the machine, But this shouldn't be a problem if they have ever used windows update. Nowadays what language doesn't come with a run time library. In VS you can create simple installers that include the runtime.
Of course if your gonna deploy to Linux and mono, your mileage may very.
PlasticSCM
If you can control the system requirements for your application, C# is fine. Some end users still (even though we're nearly in 2009 now) object to a 40MB runtime for some reason, so if you're looking to deploy an application commercially, that may be an issue for you. In a corporate setting, though, where there is some standardization of software on users' computers, this is probably not a problem.
Delphi and QT specifically are both problems. Delphi is effectively a dead language. Companies that are using it these days are, for the most part, porting their code away from it as fast as they can (job boards seem to be full of Delphi-to-C# migration jobs these days). You may like QT, but that moves almost as slowly as Delphi in the Windows world, so I would never consider it to be a real option.
More:
Business Plan Pro
Rescue Time client
Sony Vegas
Sql Management Studio
VS 2010 (much more so than VS 200x)
NASA's World Wind
BabySmash
Windows Live Writer
Microsoft Office Accounting
Fiddler 2
Windows Mobile Device Center
AdiIRC
Jetbrains dotTrace
Lots of Lenovo utilities
Planbook
These are just the ones installed on my PC...
I think that Microsoft Expression Blend/Studio is written in C#
Anything done for Robotics Studio, any XNA game (quite a few commerical ones are coming out now)
I don't see why you would not use C# as an ISV. The problem is ensuring that your target market has the .NET framework. If you are using 3.5, you can build a mini version into your distribution though this increases the file sizes for downloads of course.
Some supplemental information to think about:
One of the typical points against doing desktop applications the distribution model is a lot more difficult to manage. With web apps, if you have a large user base, you can do an update and instantly have your entire user base running on the latest version.
With traditional desktop apps, you'd have to send out an .msi or build something yourself.
However, with ClickOnce and the Updater Application Block (http://msdn.microsoft.com/en-us/library/ms978574.aspx), it's so easy to build intelligent updating into your application that it might play very nicely into an ISV plan.
Even though VS 2008/WPF is shrinking the gap, it's typically much faster to develop client applications in the WinForms space that on the web, so I think it's a very viable approach.
I believe TimeSnapper is written in C#
I have worked for an ISV before that used Delphi and it was excellent for their needs. It still produces great native applications and although dieing it is certainly not dead (yet). Until recently I would have recommened Delphi over c# for desktop applications as I had performance and footprint consderations but as .net can now be considered ubiquitous and that the platform is now maturing my opinoin would probably go with c# (over Delphi).
If you need to consider employees, you will find that there are fewer Delphi developers around that c# ones. So you may struggle to entice good devleopers in as you are using that.
That said Delphi is looking exciting again with the Delphi prism VS plugin.
Just as an aside did you know that the c# compiler is written in c++? Delphi was written in Delphi from v1.0
Windows Media Centre is powered by .NET.
I believe that MS use C# to build many of their apps both Windows and Web. At this time, C# is a great language to go with because of the flexibility of the language/framework.
The zune software (v2 and up) is written in c#. Oh, and Sage Timberline Office is written in .net (mostly).
Although it's a developer tool, the excellent open source IDE SharpDevelop was built in C#. I've also worked on another which (despite being semi-commercially-available) I'm not at liberty to divulge. (Very vertical market.)
I'm a huge fan of the C#/WinForms combination, and can't see why you wouldn't go that route if your developers are already familiar with C# and you want to get into the desktop space.
A very prominent example for a commercialy successful application would be Microsoft Visual Studio 2005 itself.
If you are looking into building a client or server application for the Windows ecosystem .Net with C# is an absolut valid choice. You'll get a very rich framework, a great third-party-app ecosystem and a huge community.
If you need a minimal memory footprint for your application or are very hardware centric then C++ maybe an option.
If you want to target the UNIX/LINUX or Apple platforms you should be looking in frameworks more native for the respective platform, though you can get a certain degree of interoperability with the Mono project (But I am not up to date on how complete their implementation of .Net currently is).
I believe the matrox graphics card configuration utilities are using the .net-framework.
I'm still just a student, but for what it's worth (and from other answers preceding mine), there seem to be quite a few apps in C#.
I'd advise working through the book Head First C# (Amazon link). This book will give you a pretty solid idea of what you can do with the language.
=-MDP-=
Creative Docs .NET is a very nice example of C# application.
Microsoft's World Wide Telescope software is written in c#
Who are your target users? Their needs will dictate your choice of language. C# and VB.NET are good general purpose langs, but if you are targeting Mac or *nix, you may want something like C++.
If you're looking for a way to get started quickly, I recently published DesktopBootstrap, which is my attempt to factor out the elements you'll need to get started.
Hope that helps!

Categories

Resources