Announcement

Collapse
No announcement yet.

Miguel de Icaza Calls For More Mono, C# Games

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Why in Hell would somebody want to programm a game in Mono? Monos Problem is the (additional to the patent and other stuff) monolitic structure, all comes from one hand basicly, python is lightweight all functionality must be loaded from 3rd party. And the stuff that gets in the python core package was battled out in the wild. I mean, there are different implementations out there, where the best become accepted.

    Sorry for my bad english just wake up 30 minutes ago. I hope its understandable.

    Or to say it in another way, Iccasa argued that mono is better than c/c++ because its a higher language/framework. So python is a even higher modularer language, so his argument is even stronger for python.

    Comment


    • #32
      .NET is used for many, many games

      Miguel mentions Unity 3D Engine as one of the Mono based technologies and you know what it has 750,000 of registered developers. There is also UDK (Unreal Development Kit) which as far as I know heavily depends on the .NET Framework technology. Every single game that uses UDK needs some version of .NET Framework. Unreal Development Kit has even bigger (than Unity 3D) community of developers and each year there are atleast several good games created with it.

      Mono is also already present in games for Linux: SpaceChem, Atom Zombie Shooter, Wizorb and Bastion NaCl (there are other NaCl games with Mono: Sleepy Jack, Cordy). I've bought Bastion from the Chrom Web Store (the Windows version doesn't work with Wine) and it worked great. I've been playing it in Unity and mostly it gave me more than 170 fps (it even was as high as 200+ fps) and the lowest been 70+ fps. You can try the demo version on your own here is the how-to.

      I'm not a programmer myself, but as far as I know it is much simpler to create a game in C# than in C++ or C languages. That's way many people are using it for game development and that's why Bastion could be ported to Linux and Mac OSX in such short time. Swing Swing Submarine wanted to port their game Blocks That Matter to Linux and Mac and they've got working version through the week-end with Mono Game, but it had performance problems back then.

      Anyway the only arguments that most of you have against Mono is that it's using something created by evil Microsoft.

      Comment


      • #33
        .NET is used for many, many games

        Miguel mentions Unity 3D Engine as one of the Mono based technologies and you know what it has 750,000 of registered developers. There is also UDK (Unreal Development Kit) which as far as I know heavily depends on the .NET Framework technology. Every single game that uses UDK needs some version of .NET Framework. Unreal Development Kit has even bigger (than Unity 3D) community of developers and each year there are atleast several good games created with it.

        Mono is also already present in games for Linux: SpaceChem, Atom Zombie Shooter, Wizorb and Bastion NaCl (there are other NaCl games with Mono: Sleepy Jack, Cordy). I've bought Bastion from the Chrom Web Store (the Windows version doesn't work with Wine) and it worked great. I've been playing it in Unity and mostly it gave me more than 170 fps (it even was as high as 200+ fps) and the lowest been 70+ fps. You can try the demo version on your own here is the how-to.

        I'm not a programmer myself, but as far as I know it is much simpler to create a game in C# than in C++ or C languages. That's way many people are using it for game development and that's why Bastion could be ported to Linux and Mac OSX in such short time. Swing Swing Submarine wanted to port their game Blocks That Matter to Linux and Mac and they've got working version through the week-end with Mono Game, but it had performance problems back then.

        Anyway the only arguments that most of you have against Mono is that it's using something created by evil Microsoft.

        Comment


        • #34
          Originally posted by blackiwid View Post
          Why in Hell
          With .NET for Windows you can create your own Hell in something that marries all the horrors of Java AND C++ in one convenient package....it just might not work the same way in Windows 32-bit and Windows 64-bit, depending on how you used pointers.

          Comment


          • #35
            So basically Miguel is talking about programming power. Not in the Turing-completeness sense, but more in terms of programming "convenience", thereby saving time and effort.
            If you're gonna do something like that, do it right and use Common Lisp, which is also faster than mono depending on the CL implementation.
            Any bindings that a game dev would need (such as OpenAL, OpenGL, SDL etc) either already exist (and can be pulled in with minimal effort using QuickLisp) or can be made with minimal effort
            by automatically harvesting the headers of the native code. That latter feature is useful, for example, for getting foreign bindings to a game engine written in C++.

            Sorry Miguel, you're backing the wrong horse. Mono will *never* be as powerful as any random Lisp dialect without effectively becoming a Lisp as well.

            Originally posted by blackiwid View Post
            Why in Hell would somebody want to programm a game in Mono? Monos Problem is the (additional to the patent and other stuff) monolitic structure, all comes from one hand basicly, python is lightweight all functionality must be loaded from 3rd party. And the stuff that gets in the python core package was battled out in the wild. I mean, there are different implementations out there, where the best become accepted.

            Sorry for my bad english just wake up 30 minutes ago. I hope its understandable.

            Or to say it in another way, Iccasa argued that mono is better than c/c++ because its a higher language/framework. So python is a even higher modularer language, so his argument is even stronger for python.
            Sorry to burst your bubble, but while Python is extremely useful for scripting and web development, CPython 3 is one of the slowest language platforms out there, coming in after ruby, and besting only PHP and Perl (see here for info detailing performance). Now, most people would argue that the factor x that some language A is faster than B doesn't matter compared to correct algorithm use (which can win you orders of magnitude performance gains), and they would be right... if we weren't talking about games.
            Additionally, I'm told that Python's bytecode is relatively easy to reverse-engineer, something proprietary game devs won't be welcoming with open arms.
            So for a FOSS RTS game it might actually work, but no serious fast-paced game developer will actually consider using Python for games.
            Last edited by JeanPaul145; 02-12-2012, 10:41 AM. Reason: clarification

            Comment


            • #36
              Originally posted by JeanPaul145 View Post
              So basically Miguel is talking about programming power. Not in the Turing-completeness sense, but more in terms of programming "convenience", thereby saving time and effort.
              If you're gonna do something like that, do it right and use Common Lisp, which is also faster than mono depending on the CL implementation.
              Any bindings that a game dev would need (such as OpenAL, OpenGL, SDL etc) either already exist (and can be pulled in with minimal effort using QuickLisp) or can be made with minimal effort
              by automatically harvesting the headers of the native code.
              Does lisp run on mobile platforms? That's a serious question, I'm mainly interested in Android and iOS (but WP would also be nice). I am looking for something higher-level than C/C++ for indie game development.

              C#/Mono fits the bill with on huge caveat: while it supports all major desktop and mobile platforms, i.e. Linux, Mac, Windows and their mobile variants, the MonoTouch/MonoDroid license terms are ridiculous (800$/year per developer?!) for a buggy and immature development environment (MonoDevelop and the mobile plugins are very very buggy). 800$ for an expected revenue of 1000-2000$ is prohibitive. If Miguel was smart, he'd create a free or low-cost indie license for sales up to, say, 5000$ and capture a part of the huge indie game market - but no, they keep on a course that is slowly making the Mono effort irrelevant.

              Which makes me sad. C# is a very well-designed language that tries hard to get out of your way (similar to, say, Python and unlike Java or Haskell). It is well-suited for games but it suffers from its Microsoft affiliation - not for ideological reasons, but because Microsoft absolutely refuses to support non-Windows platforms.

              Anyone has any ideas for a viable cross-platform language for indie development?

              Comment


              • #37
                Miguel considers C#/Java to offer much greater productivity (an easier experience) while performing nearly as fast as C/C++. Miguel says C# can offer 50~90% of native performance.
                Or to put it another way: it performs 10% slower than C or C++ in the best case. In the worst case, it runs at half the speed. <sarcasm>Thankfully, games aren't one of those areas where performance matters</sarcasm>

                There's also the not-inconsiderable boundary of moving from a language in which all your developers are experienced to something new. I understand that it has the same (or at least very similar) syntax, but there's more to learning a language than remembering its syntax.

                Comment


                • #38
                  Miguel mentions Unity 3D Engine as one of the Mono based technologies and you know what it has 750,000 of registered developers. There is also UDK (Unreal Development Kit) which as far as I know heavily depends on the .NET Framework technology. Every single game that uses UDK needs some version of .NET Framework. Unreal Development Kit has even bigger (than Unity 3D) community of developers and each year there are atleast several good games created with it.

                  Mono is also already present in games for Linux: SpaceChem, Atom Zombie Shooter, Wizorb and Bastion NaCl (there are other NaCl games with Mono: Sleepy Jack, Cordy). I've bought Bastion from the Chrom Web Store (the Windows version doesn't work with Wine) and it worked great. I've been playing it in Unity and mostly it gave me more than 170 fps (it even was as high as 200+ fps) and the lowest been 70+ fps. You can try the demo version on your own here is the how-to.

                  I'm not a programmer myself, but as far as I know it is much simpler to create a game in C# than in C++ or C languages. That's way many people are using it for game development and that's why Bastion could be ported to Linux and Mac OSX in such short time. Swing Swing Submarine wanted to port their game Blocks That Matter to Linux and Mac and they've got working version through the week-end with Mono Game, but it had performance problems back then.

                  Comment


                  • #39
                    Who will have to pay $$$ to MS for protection as soon as I try to make some money from my Mono game, me or De Icaza?
                    Thanks, I'm keeping C++. I can use a garbage collector with it as well.

                    Comment


                    • #40
                      Originally posted by BlackStar View Post
                      Does lisp run on mobile platforms? That's a serious question, I'm mainly interested in Android and iOS (but WP would also be nice). I am looking for something higher-level than C/C++ for indie game development.

                      C#/Mono fits the bill with on huge caveat: while it supports all major desktop and mobile platforms, i.e. Linux, Mac, Windows and their mobile variants, the MonoTouch/MonoDroid license terms are ridiculous (800$/year per developer?!) for a buggy and immature development environment (MonoDevelop and the mobile plugins are very very buggy). 800$ for an expected revenue of 1000-2000$ is prohibitive. If Miguel was smart, he'd create a free or low-cost indie license for sales up to, say, 5000$ and capture a part of the huge indie game market - but no, they keep on a course that is slowly making the Mono effort irrelevant.

                      Which makes me sad. C# is a very well-designed language that tries hard to get out of your way (similar to, say, Python and unlike Java or Haskell). It is well-suited for games but it suffers from its Microsoft affiliation - not for ideological reasons, but because Microsoft absolutely refuses to support non-Windows platforms.

                      Anyone has any ideas for a viable cross-platform language for indie development?
                      The short answer is probably yes, but let me clarify:
                      First and foremost, it is important to realise that there is not one Lisp-language like there is Java, C++ or C. There are many dialects, and Clojure and Common Lisp are 2 distinct dialects. This is relevant because code written in 1 dialect will not usually work without extra effort in another, although porting will probably be a lot easier than going from C++ to C#, for example, since most dialects share a core of only a handful of so-called special operators, on top of which the rest of the language is built. So porting comes down to writing the functions and macros used in terms of the available operators in the target platform, instead of "syntax conversion". In fact, Lisp dialects have very little syntax, and this is a Good Thingtm IMO.

                      Now on to the actual answer:
                      On Android, there is certainly a Lisp available, it's called Clojure. The "problem" with Clojure is that when I first heard of it, it was slow on Android due to the fact that Dalvik VM is register-based instead of stack-based, which made features oft-used in Lisp like closures relatively expensive on Android, though not on the stack-based JRE. However, since then I've heard (but not verified in person) that Clojure has been updated to work well with register-based VM's, thereby making it interesting to use in Android. In addition, higher-end smartphones have gotten a *lot* faster since then, so the combination of the 2 may actually make Clojure on Android viable.
                      However, since Clojure is firmly rooted in the JRE, it probably won't work on iOS without a JRE running, including the extra overhead. In Android you don't get this overhead because AFAIK, as far as Clojure is concerned, Dalvik *is* its JRE.
                      And IIRC, MS has basically said that native code (and therefore using a JVM) is a big no-no on WP7, though they may have plans to change that by now.
                      So Clojure is probably not an option unless I'm wrong on at least the Apple stance.

                      Then there is Common Lisp. Common Lisp has many implementations based on common ANSI standard, so portably written code will work on any ANSI-compliant implementation. Now I haven't seen all of 'em by a long shot (I mostly use the very high-quality SBCL, which compiles directly to native binary code, and therefore is very fast in most cases) but it just might be the case that ECL will work for you, because it first compiles to C code. So what you could do (for Android and assuming Apple allows pure C code, which doesn't seem like a stretch looking at Objective C) is build your game with Common Lisp, use ECL to translate that to C as part of the compilation procedure, and then use the platform's means to get bindings to that C code.
                      This won't help you in WP7 though, but then again, short of writing C# code I think nothing will until MS allows unmanaged C/C++ code.

                      Hopefully my answer is helpful to you.
                      Last edited by JeanPaul145; 02-12-2012, 11:29 AM.

                      Comment


                      • #41
                        MONO comes from opensource-hostle company and any of its "features" are already covered by other languages.

                        Miguel should start Libre Office for Windows compaign instead.

                        Comment


                        • #42
                          Originally posted by TechMage89 View Post
                          What happenend to Java, and Python and Haskell, all of which are better languages for writing a game in and don't require manual memory management?
                          Same thing with D. It's high-level, aimed at being convenient and similar to C/C++, has garbage collection, is cross-platform and doesn't require a VM to begin with.

                          Comment


                          • #43
                            Originally posted by JeanPaul145 View Post
                            So for a FOSS RTS game it might actually work, but no serious fast-paced game developer will actually consider using Python for games.
                            You forget something, you dont have to use python alone, naturaly the engine is programmed in c but we talked about the game, so there are much games out today that use python for all the logik and all except the engine. Therefor you get python-bindings that access the performance-power of C. So use the language that fits at best your needs, to get performance on low-level stuff I think nothing but maybe assambler can beat C, maybe c++ is not much slower, but there are also python-bindings possible for it, then you use python to clue all togeter and connect the signals with the actors


                            As example I also clicked together with Blender a game ( 3d tic tac toe ) a few weeks ago, thats also python powered at least the logik, and had never (under linux I dont programm under windows) had better productive game-development experince, you just dont need to know how to programm at all for that. And you have one programm for all tasks of game development. And yes you cant make with that the next crysis-high-end grafics game, but thats only because the integrated engine is not good enough, but if you can make with it (blender) nice movies, you should also can make games that look nearly like that.


                            Its a bit like you would say programming desktop apps with python is not fast enough because the kernel is written in C.

                            But why would you use a low-level programming language at places where performance dont matter, so python is maybe in some tasks slow but so is java maybe in some tasks its faster ok, but therefore you have to wait a feeded hour till the very big interpreter has loaded and takes tons of mb of ram to run, a python interpreter is only a few kb big and starts instantly. That fact makes Java not good for the Desktop, for serverprocesses that is maybe not important. But ok here mono is better no big vm loading at startup, but the language is nearly as ugly to use as java is, or even worse.
                            Last edited by blackiwid; 02-12-2012, 12:13 PM.

                            Comment


                            • #44
                              If his claims are true, he's merely advertizing short-term personal convenience over long-term general benefit.... The sad thing is that it usually works.
                              I'm not too worried about developers who already provide crossplatform versions of their games. Rather, I'm worried about those (much more common place) who'd consider porting their stuff from windows to other platforms. If they start regarding mono as a quick and easy way to "improve portability" with little regard to the legal incertainties, and start shoving e.g. WinForms left and right in their Linux version, that could turn very ugly very fast.
                              And I could see a streak of "darn whiny Linux people, never happy" claims if users decide to steer clear from those mono apps.
                              Last edited by PsynoKhi0; 02-12-2012, 12:16 PM.

                              Comment


                              • #45
                                Originally posted by blackiwid View Post
                                You forget something, you dont have to use python alone, naturaly the engine is programmed in c but we talked about the game, so there are much games out today that use python for all the logik and all except the engine. Therefor you get python-bindings that access the performance-power of C. So use the language that fits at best your needs, to get performance on low-level stuff I think nothing but maybe assambler can beat C, maybe c++ is not much slower, but there are also python-bindings possible for it, then you use python to clue all togeter and connect the signals with the actors


                                As example I also clicked together with Blender a game ( 3d tic tac toe ) a few weeks ago, thats also python powered at least the logik, and had never (under linux I dont programm under windows) had better productive game-development experince, you just dont need to know how to programm at all for that. And you have one programm for all tasks of game development. And yes you cant make with that the next crysis-high-end grafics game, but thats only because the integrated engine is not good enough, but if you can make with it (blender) nice movies, you should also can make games that look nearly like that.


                                Its a bit like you would say programming desktop apps with python is not fast enough because the kernel is written in C.

                                But why would you use a low-level programming language at places where performance dont matter, so python is maybe in some tasks slow but so is java maybe in some tasks its faster ok, but therefore you have to wait a feeded hour till the very big interpreter has loaded and takes tons of mb of ram to run, a python interpreter is only a few kb big and starts instantly. That fact makes Java not good for the Desktop, for serverprocesses that is maybe not important. But ok here mono is better no big vm loading at startup, but the language is nearly as ugly to use as java is, or even worse.
                                You're right in that performance for some parts of a game may not matter much, but there's another factor I'd left implicit: portability. Python is not a very portable platform if you have to deal with X360 and PS3 hardware in addition to Windows, OS X and Linux. If you need that you'll want something that doesn't have any performance overhead, but also something that ideally doesn't have the overhead of manually porting a complete platform every time you decide to port your game.

                                Comment

                                Working...
                                X