2014-09-02 02:17:29

Hi all,
I'm creating this topic because I've been looking at topics that I've found interesting on the surface, but ultimately become ramblings, arguments and such on computer science theory and applying this info to what languages carry out tasks better than others.
Because of my limited knowledge of this stuff, which I'd probably need a few college courses to understand in detail, I'm creating this topic from one gamer to another who simply wants to sit down and create a game, but needs help with choosing the language.
For me, idealy I want something where I can create audio games cross platform. iOS would be cool, but Mac and Windows for a start. I'd be interested in finding some PureBasic documentation that's newer than the 2003 docs I found online. Also, I'd love to have BGT-like docs for PB. That is to say, audiogame-specific docs, because I don't want to pay for PB unless I'm damn sure I can make a game, even a small one.
Heck, for Mac I want to create a flexible Youtube player, because MacTubes is not what I want in a youtube player. I want Youtube search, with youtube channel search, easy playlist viewing, etc.

I wonder how easy this'd be to make in Swift, but I question the accessibility of XCode.
Lol. At the end of the day I wish AudioGame Maker hadn't failed in a datacenter fire. And if I find another "Learn X language in 30 days" book I don't know what to do with myself. Those things amake me nervous as it puts my state of mind into some kind of panic if I can't learn Java in 30 days. I'm glad Philip didn't do that with BGT.

2014-09-02 03:41:10

I'm not going to go into language preferences; my thoughts on this are very well recorded elsewhere.
Cross-platform is hard.  Many good programmers including myself struggle with it.  There's a lot of systems (including Python) that say they're "cross-platform", but then you end up in the "if you don't use this feature, don't call that library, and don't make this other assumption about the system you're on" land.
Pick one platform, whichever one is your primary.  Make a game for it.  I would posit that Mac is potentially a good choice from a technical perspective because if we had Core Audio everywhere else I'd not be doing Libaudioverse; Core Audio appears complex and not super well documented as far as I can tell.  XCode itself highlights every accessibility issue with the Mac, at least last I looked at it (I was, for about 2 months, going to do IOS development with Objective-c.  The slowness of getting things done with XCode stopped it).  I've heard rumors this might get better soon, but they're only rumors and definitely not substantial.
The other thing that's big here is math and basic computer science, no matter how much you want to avoid them.  Anything remotely complex is going to require both.  If you don't know much trigonometry, there are certain types of games that are basically not doable.  Namely, Shades of Doom and any other FPS.  If you aren't comfortable implementing pathfinding, you need to find a system that already does it and stay well within its constraints (I am unfamiliar enough with BGT's implementation that I do not know what that specific one lets you do or not).  The pathfinding algorithms can be done in under 100 lines, but the motivation behind why it works is not the simplest thing ever.  The alternative is to give enemies fixed paths, but this won't let them respond to changing environments like the player running away.  1d Side-scrollers are pretty easy and avoid all of this, but 2D side-scrollers like BK3 get a bit more complicated.  If you want any sort of real AI, you're headed for some non-newbie areas.  Top-down games (Shadow Rine) can be as simple or as complex as you want to make them.  I'd argue that a top-down might be easier than a side-scroller because you don't have to worry about gravity.  But really, as long as it's not an FPS, the difficulty is set by you and how much you want it to do, with the clarification that raising the bar above a certain point is like tripping on the edge of the deep end of your swimming pool while not knowing how to swim.
I can barrage you with worthwhile terms to Google, but don't think that will help at this point.  Googling is your best friend as a programmer, especially Googling for Stack Overflow answers.  Really.

My Blog
Twitter: @ajhicks1992

2014-09-02 10:01:36

I feel like trig (or at least the parts an audio game is likely to need) should be easy to explain. Should I try it?

看過來!
"If you want utopia but reality gives you Lovecraft, you don't give up, you carve your utopia out of the corpses of dead gods."
MaxAngor wrote:
    George... Don't do that.

2014-09-02 10:28:47 (edited by tward 2014-09-02 10:32:03)

Orin, what Kamlorn said above is all too true. I am a fairly experienced programmer, and cross-platform development is difficult for even an experienced coder. There are a number of languages like Java, Python, etc that claim to be cross-platform, but it only works assuming you do or don't use this or that API, library, etc. So since you are a new developer my suggestion is start with something that works on your operating system of choice first, and once you have more experience branch out to other platforms.

Regarding documentation similar to BGT for Pure Basic isn't going to happen. Let's be realistic. Audio games aren't exactly well known outside of the blind and low vision community, and Pure Basic isn't widely used by mainstream programmers. There is probably some documentation for general game development in Pure Basic, but you'd have to go through and assess what was and was not important. Probably not something you want to do being a new programmer.

To be honest documentation is one of the things I have against Pure Basic. It may be a easy enough language to learn, may work alright for developing games, but there isn't a great deal of documentation like there is for other languages. Add to that Pure Basic is not free, and you are going to end up paying out money for something when you could have tried something with more documentation and that is free to start with.

All that said I think your best option at this point might be Python 2.7. The reason I say that is Python is fairly cross-platform depending on if you use the right APIs, it is fairly easy to learn, and there is lots of general documentation out there on the language. I am sure if you ask game developers that one of us might be able to write a tutorial or sample code to help you with gaming specifics.

Sincerely,
Thomas Ward
USA Games Interactive
http://www.usagamesinteractive.com

2014-09-02 14:03:09

To preempt complaints about indentation accessibility: I only really started taking Python seriously this year. Indentation was not at all hard to get use to. I don't have NVDA read tabs all the time--that would just get annoying--but if I need to check, a simple use of the home and right arrow keys is sufficient (also, braille helps loads, but I've made do without quite a bit). It's easy to spot when indentation is broken if the interpreter complains, and applying indentation to other languages that don't require it has cut down on my "Unexpected end of File" errors tremendously. (It makes me wonder if sighted programmers are even more powerful by virtue of being able to see all of that at a glance, considering that just indenting with only a screen reader feels like a power boost.).

看過來!
"If you want utopia but reality gives you Lovecraft, you don't give up, you carve your utopia out of the corpses of dead gods."
MaxAngor wrote:
    George... Don't do that.

2014-09-02 15:13:33

Honestly as a new developer you really don't need to worry about trigonometry. It's likely that you won't be at that level of programming yet for a while.

Deep in the human unconscious is a pervasive need for a logical universe that makes sense. But the real universe is always one step beyond logic.

2014-09-02 15:44:53

The point at which trigonometry becomes an issue isn't much to do with programming skill.  It's more to do with what you're doing and how you're doing it.  I've seen topics on here where people have started posting 100-line if statements and I've come in and replaced it with two via trig formulas.  So I don't know exactly when it gets hit, but I do know that it has a lot to do with the type of game being coded.
As for computer science in general, you can do a lot with arrays.  But the day does come when they're too slow, and you need to at least know what a tree and a hash table are.  This can be avoided for awhile, at least until you need to pull a 100x speed increase out of your hat in order to finish the project.  Many projects never hit this issue, but be aware that it exists.  You do not need to know how to implement these things, just how to use them; most languages have them built-in these days, and it's usually just some library calls.  There is no need to go jump on the Comp. Sci. bandwagon at this precise moment.
@CAE_Jones:
I don't know if you really want to try to explain it.  That's harder than it sounds.   You can post the formulas, but the understanding is hard.  The understanding also saves hours and hours later.  I've personally never had luck explaining it without a diagram, but maybe that's just me.
And I'm glad to see we have another indentation convert.  Telling NVDA to only turn it on in your text editor can be done via config profiles, or you can just memorize nvda+n, p, f, i, space, enter.  I don't know about other screen readers, save that jaws always had bugs involving indentation announcement and the bottom line of the window.  Since it's only announced when indentation changes (unless it's the aforementioned Jaws bug, in which case you will drown in the high-pitched "4 spaces"), it's kind of like left brace and right brace--at least in my opinion.  Also, having indentation on does make it announce with read line, which is also super helpful-especially when reading code by the sighted.  I find it interesting that you use the arrow keys: I've never heard of someone doing that and still thinking it's a good idea.  My C++ is, indeed, always indented.

My Blog
Twitter: @ajhicks1992

2014-09-02 17:13:51

Pure basic isn't a bad language. Their is a reference manual in the help menu of pure basic that allows you to read the functions and their exampples. However, if your looking for a tutorial specificly designed to teach you how to program audio games, you are out of luck. As other's have said, stick with your current system of choice before trying to go cross platform. Before you should even consider cross platform you should get at least 1 game developed so you know the skills for developing.

Check out the new reality software site. http://realitysoftware.noip.us

2014-09-03 03:36:41

So, there are lots of experienced programmers on this thread... right?
Well if so, you all should, by now, realise that it's possible to create games in pretty much all programing languages, that is if you set your mind to it. You see, the bad thing about bgt and audiogame maker is, they teach users pretty much that it's good to only create audiogames with a toolkit speciffically described for that.
And can a game be coded in pb? It most definitely can! Look at death match, and even snow race... both were coded in pb. So yes, games can be coded in pb, but unlike bgt, there's no audiogame-speciffic libraries for that. Creating audiogames in pb requires the use of variables, procedures, structures, sounds, and in a lot of cases timers. That's the basics.

  If you want a book on pure basic, buy Gary Willoughby's "Pure basic-a beginner's guide to computer programming."

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2014-09-03 03:38:12

The thing I found with pure basic is that finding documentation for a new programmer was difficult. there is the reference manual, but little in the way of an actual language tutorial, at least when I googled it.

Deep in the human unconscious is a pervasive need for a logical universe that makes sense. But the real universe is always one step beyond logic.

2014-09-03 20:34:52

That's true, and while for some it may be a turn off, for me I actualy found it to be way more helpful. I get that not everyone learns the same way I do, so this may be entirely different, but one of the things which inspired me to code so much is exparimentation. Will this methid work? No? OK, how about this one. I go on like that until I find something which works for my needs, and its that part of game creation which I like, asides from testing the fully completed product.

Check out the new reality software site. http://realitysoftware.noip.us

2014-09-03 21:27:23 (edited by stewie 2014-09-03 21:27:34)

If you are an entirely new programmer though, you wouldn't even know what the concept of a variable in programming or computer science was possibly. I think you had prior experience, but I could be wrong. If you have experience with a language, learning another is another thing entirely.

Deep in the human unconscious is a pervasive need for a logical universe that makes sense. But the real universe is always one step beyond logic.

2014-09-04 03:27:05

Remember I knew bgt before, this is what the older dm versions were ritten in before I migrated to pure basic.

Check out the new reality software site. http://realitysoftware.noip.us

2014-09-04 04:36:03

It is indeed true that there is no definite language tutorial for pb, but is there really a need of one? Granted, Danny got me on my feet with the language, but I'm sure that, like him, I'd probably be able to learn it on my own if I so chose to. And as for knowing what the purpose of variables is in programming and/or computer science, I'm sure it explanes it. I could be wrong, but I doubt pure basic just says, "here's how to write a string. string$ = "text" or string.s = "text"." I'm sure there's some sort of explanation of the basic concepts.

  But it's honistly your choice. I'm not like some people, who try and persuade you into their way of thinking and using their language. Like others still, I understand that people learn their own way. Like, for example, my way of learning easiest is by reference manuals such as pb's, and practicing coding. For you, stewie, that might be a language tutorial similar to the one found in bgt.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2014-09-04 16:20:24

No.  Most languages do not explain the basics in official documentation.  They will tell you how to declare a variable, what the possible types are, etc.  They will not spell out what variables and types are, why you might want them, etc.  Some languages do provide tutorials for new programmers in the reference manuals, but this is rare and far between.  Having someone get you started is way different: when the why or what does this term mean question inevitably comes up, they can tell you.  Purebasic may have a basics for new programmers section, but that would put it in a minority.  You usually have to go elsewhere for it and, even if the language offers it, it's usually not the best.  All you typically get is language specifics with an expectation that you know what all the words mean-it's assumed you're already a programmer.

My Blog
Twitter: @ajhicks1992

2014-09-04 16:59:34

Indeed. You don't know what a variable is? Go to math class. And especially, don't start programming, until you at least know the terms. Granted, some programming languages have unique terms, beut said terms are self-explanitory, or explaned within the language's user manual.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2014-09-04 20:06:25

Going to math class does not teach you what a variable is in the programming sense.  Not unless we're talking about some languages which are so far outside this discussion that we need the Hubble telescope to see them.  Going to math class does not, in general, make you a better programmer.  Programming makes you a better programmer, and there are no shortcuts.
Going to math class does give you a wide variety of useful math things you can make use of and the highest levels of math wherein you make proofs for almost every homework question may promote the right mindset.  But math is orthogonal to being able to write a program.  These concepts either come from a programming class, a teacher or friend, or a programming tutorial aimed at one who has never programmed before.  You can get some of it by osmosis as it were-watching the discussions of others online-but you can't just innately be a programmer as is being suggested here.  That doesn't happen; no matter how good you are, you got the basic concepts from somewhere else at some point.
Second languages? No problem.  Fifth languages? An hour with the reference manual.  But the first one is a very big struggle, and you do need external help aimed at someone in your situation of one sort or another.

My Blog
Twitter: @ajhicks1992

2014-09-04 20:46:29

I need to agree with what's been said here. I only figured out what variables were by struggling through my early days of programming. The problem is, programming audio games isn't simpply a you get up, write 10 easy lines of code and sit back down type of thing. In order to even start programming a game you need to be at least aquainted with programming terms, and even your first program you write never will be a true game, the hello world program is what i'm refering too here. Hents is why their's no solid tutorial for strate up programming audio games. I should also mention that a lot of your time will be spent planning as well as coding. If you code first, then plan second, eventualy your going to run strate into an opsticle course with your current implementation of how things will work. I know, i've done it myself. And be prepared that some titles you develop won't make it off the ground, which is perfectly acceptable. For exampple, a game is only as good as you make it. If you don't like your creation, your going to set it aside eventualy from lack of intrest to even touch the code. And bgt does work in this way. No matter what language you choose, be prepared to devote a lot of effert first to learn the initial steps, then to get features working exactly the way you want them too.

Check out the new reality software site. http://realitysoftware.noip.us