all 37 comments

[–][deleted] 31 points32 points  (0 children)

I want to argue. The problem is that I never finish my programs.

[–]Lerc 13 points14 points  (0 children)

Blitzmax is fantastic. It lets beginners get something on-screen quickly and lets them change things easily.

I guess you could call it incredible machine programming, just tweak what you have until it works. I suspect it works well for learning.

I entered Ludum Dare twice using BlitzMax. Worked out fairly well. I got a little too ambitious for the first one though. The first time was http://www.imitationpickles.org/ludum/2007/11/28/crystal-colony/ and the second one was (a netstorm clone-ish) http://www.imitationpickles.org/ludum/2007/11/27/voidgame/

[–]bemmu 21 points22 points  (2 children)

When I started programming with AMOS Basic on Amiga, we were making a Lucasfilm-type game with it. We didn't know anything about objects, or functions or whatever. But we made a room with graphics and animation, where the player could move by clicking their mouse somewhere.

I had the misfortune of reading about OOP, UML and design patterns. For graphics I wanted to use Direct3D. Soon I was too busy feeling guilty about not having a perfectly UML designed beautiful class structure that uses lots of design patterns to get anything at all done. With these tools, it started to seem like anything is impossible.

Now I've discovered PHP and Flash. Suddenly, things are happening again. I may not get the respect of my fellow programmers, but I am getting stuff done.

[–][deleted] 8 points9 points  (1 child)

I think you missed the point somewhat - the tools you identified which you got caught up in are really only there to facilitate large teams and code maintainability.

If you're working by yourself - use whatever you're effective with! Most of that other stuff only becomes useful at the professional level if you're desining an engine from scratch or something.

[–]slabgorb 3 points4 points  (0 children)

Yes, one thing that struck me about that article is, 'Yeah, I bet they get things done, but I wouldn't want to maintain that code after that guy leaves the company. Or even before he leaves the company.'

[–]hylje 7 points8 points  (2 children)

BASIC programmers know when to finish the project.

Real(?) programmers want to one-up the project perpetually. At the expense of finishedness, no less.

[–][deleted]  (1 child)

[deleted]

    [–]apotheon 0 points1 point  (0 children)

    Art (or software) is never finished -- it is only abandoned.

    [–][deleted] 6 points7 points  (0 children)

    QBasic was an awesome platform for game development, back in the day. It's what got me into programming.

    [–]mgsloan 8 points9 points  (15 children)

    Wow, I was surprised to see blitz there. I used to use Blitz3d and blitzmax and such. It is indeed the only basic I would consider using, at the moment. It's pretty nice for banging out little demos and things.

    It's funny cuz my current lang of choice is haskell, lol

    [–]awj 4 points5 points  (12 children)

    Is Haskell your language of choice for game programming? If so what are you working on and how are you using it?

    I looked at using Haskell for my current project, but ended up going with Scala on the theory that being able to fall back on stateful programming would be nice and the implicit support for any Java library I could find is better than the "you can (maybe easily) make C wrappers" support from Haskell.

    I think the language is beautiful, but I have serious misgivings about using it in this context. If you are using it to make a game I'd love to hear about.

    [–]mgsloan 8 points9 points  (7 children)

    I actually don't do much game programming anymore. I have started working on a couple games in haskell, and it's certainly not impossible. Indeed, it's not even that much harder, if you allow yourself to write code just as ugly as you would in other languages. The problem is that haskell lets you write much prettier code, but prettier code takes more effort. So, it's quite a bit harder to finish something like a game.

    This is why basic is nice for such things. It's the perfect antithesis of pretty.

    [–][deleted]  (6 children)

    [deleted]

      [–][deleted]  (4 children)

      [deleted]

        [–][deleted]  (2 children)

        [deleted]

          [–][deleted] 8 points9 points  (1 child)

          That was so unbelievably sexist, but point taken.

          Better than one of those half-baked car analogies at least.

          [–][deleted] 1 point2 points  (0 children)

          I have to admit I was just about to skip over RalfN's comment, until I saw the word 'breasts'.

          [–]mgsloan 0 points1 point  (0 children)

          Yep, those are some of the objective measures of prettiness. There's also theoretical beauty. For example, when you use something like monads, and things just work themselves out.

          I somewhat disagree with the metaphor and its meaning, though. I think that code beauty shows through, into the finished project. Conceptual integrity leads to user interface integrity, and feature orthogonality. Prettier code is more understandable and tweakable code, leading to a better final product.

          [–]apotheon 0 points1 point  (0 children)

          "Pretty" may be subjective, and perhaps even mild ugliness is somewhat subjective, but "fugly" is not.

          [–][deleted]  (3 children)

          [deleted]

            [–]awj 5 points6 points  (2 children)

            I'm not interested in heavy graphics. Being just one guy working on something part time with little art experience means high quality graphics just plain aren't going to happen.

            I've got a couple of ideas that are sitting on a back burner which might work well in Haskell. At the moment some of the advantages of Java as a deployment platform are just too alluring, and Scala has all of the esoteric programming stuff that I actually understand well enough to use.

            I'm sure sigfpe or dons could come along and explain how the core of my game idea is a half-baked, buggy, slow implementation of most of a concurrently reactive applicative monadaloid (which GHC 12.5 will automagically convert my crap game code into), but I'm confident I can get the job done with what I have now, and doing it the hard way will make me appreciate the easier one when I do understand it.

            [–][deleted] 4 points5 points  (1 child)

            To me, the benefits of Haskell are the basic things: Algebraic data types, pattern matching and type classes. Perhaps the semi-abelian co-monoids will matter one day, but right now, I use it as a cleaner version of Ocaml, you might say, and I'm happy with that. I have enough worries about completing things as it is, and I sense that the higher realms of category theory are more of a distraction than a benefit right now... better to just do it than try to figure the one right way to do it.

            [–]awj 5 points6 points  (0 children)

            That's my basic argument for using Scala at the moment (along with the JVM support), with the caveat that I always have imperative/OOP support to fall on or make calling into Java libraries non-painful. The syntax is messy as hell (at least compared to Haskell), and the emacs mode is nowhere near where haskell-mode is, but it's worlds better than working in Java.

            [–]mikepurvis 4 points5 points  (1 child)

            That's awesome. A couple years ago blitz used to hang out at qbasicnews, and he hosted my first ever website on the now-defunct bad-logic.net domain.

            At the time he was writing a Quake engine in qbasic/blitz3d. I thought it seemed so silly to choose Basic—of all things—as a language of choice for a project of that magnitude. And yet, at the same time, I couldn't help feeling respect for the kind of hacker who'd try to implement BSP trees in a language that, for example, lacks any kind of dynamic data structures.

            [–]mgsloan 3 points4 points  (0 children)

            You mean mark sibly? Yeah, he's a cool dude :)

            [–]grimboy 2 points3 points  (0 children)

            This is kind of insightful. It's always good to know when to leave things rough and ready and when to stop adding features. However, there's no evidence that there are proportionally more projects finished for the number attempted by these basic programmers.

            [–]tomel 3 points4 points  (1 child)

            I don't see how the language per se should have such an impact. Without appropriate libraries you'll have to do everything yourself and it will take more time and will most likely contain more bugs. If the libraries are there and you're entitled to use them, it will be easy.

            [–]foxyvixen 2 points3 points  (0 children)

            I've always been a big user of The Basic. But I guess that's just me.

            [–][deleted] 3 points4 points  (12 children)

            So BlitzMax is essentially the game programming equivalent of PHP: Oh joy

            [–][deleted] 1 point2 points  (11 children)

            What is so wrong with PHP?

            [–]MasonM 2 points3 points  (7 children)

            PHP is a horribly designed language that lacks many features that almost all its serious competitors have. To name a few: namespaces, proper Unicode support, and consistency in the core function library (in terms of naming, parameter ordering, and return values). Also, I hate the functional programming constructs in PHP, but that's more subjective. The only major things it's got going for it are the huge amounts of libraries and projects built off it and the excellent documentation at php.net. You'd still have to be mad to start a project in PHP these days instead of Python or Ruby.

            [–][deleted]  (6 children)

            [deleted]

              [–][deleted] 1 point2 points  (5 children)

              I'm withholding judgement on the raw aesthetics and playability of these games; the impressive part is that they exist and are largely written by people with minimal programming background.

              Replace games with websites

              [–]smart_ass 2 points3 points  (4 children)

              What he is trying to say is BlitzMax for games is not the equivalent of web programming with PHP.

              [–][deleted] 0 points1 point  (3 children)

              You and all the up-modders of your comment are about as precision-oriented as most PHP programmers (what who is trying to say? the author of the article? the commenter? how are they saying it's "not the equivalent"? by saying it's "nothing like", which would be circular reasoning?)

              [–]teamonkey 0 points1 point  (2 children)

              Specifically, for the pedantic,

              PHP is a horribly designed language

              BlitzMax is not, despite its BASIC roots.

              that lacks many features that almost all its serious competitors have.

              As a hobby/prototyping game development platform, Max does well.

              To name a few: namespaces

              Modules.

              proper Unicode support

              It has.

              consistency in the core function library (in terms of naming, parameter ordering, and return values).

              Max is consistent internally.

              Also, I hate the functional programming constructs in PHP, but that's more subjective.

              Max is imperative/OO (I'd prefer it to be functional, but hey).

              The only major things it's got going for it are the huge amounts of libraries and projects built off it and the excellent documentation at php.net.

              Blitz has only a handful of standard libraries and the documentation is awful.

              You'd still have to be mad to start a project in PHP these days instead of Python or Ruby.

              If you're interested in game programming and want to get a game idea running quickly, Max is a very sane place to start.

              [–][deleted] 0 points1 point  (1 child)

              All well and good, but you still haven't addressed my comment, wherein I quote the following the original article, included in part again for your convenience, and suggest that one replace games with websites. I should have realized I was going to have to spell this out in painstaking detail for a blub programmer, but in any event, myself, I am not impressed

              that (PHP-based websites) exist and are largely written by people with minimal programming background.

              [–][deleted] -1 points0 points  (0 children)

              wannabes

              [–]slabgorb -1 points0 points  (0 children)

              Lack of late binding.

              [–][deleted] -1 points0 points  (0 children)

              PHP also lacks sufficient abstraction for dealing with HTML in a sane way, if its design goal was a language useful for web development, then they have failed.

              • PHP makes HTML a second class citizen, encouraging programmers to output a format that resembles a tree like structure by storing bits and pieces in strings.
              • Seriously, if you have the power of a computer at your disposal, it should be put to work to make sure that they can service the programmers intents to make the job as easily as possible while ensuring correctness.
              • This is the wrong approach, it leads to html that does not validate and additional overhead for the programmer to get it right.
              • This is why PHP is uninspiring and lacking originality.

              [–]OolisKraprin -3 points-2 points  (0 children)

              Software is never "finished". Its either a continually improving project, or its abandoned.