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; 12 February 2012, 11: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; 12 February 2012, 12:29 PM.

                      Comment

                      Working...
                      X