(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
06-01-24 08:55 PM
0 users currently in Programming.
Acmlm's Board - I3 Archive - Programming - Game Maker anyone?
  
User name:
Password:
Reply:
 
Options: - -
Quik-Attach:
Preview for more options

Max size 1.00 MB, types: png, gif, jpg, txt, zip, rar, tar, gz, 7z, ace, mp3, ogg, mid, ips, bz2, lzh, psd

UserPost
MisterJones
Posts: 27/125
This might be at thi point off-topic, but Game Maker does support functions and objects, at least since v4, and it has already been on v6 for many years.

When you define a script, you are actually creating a function. You use arguments by using the prebuilt argument0...argumentN variables inside your scripts (yeah, no custom names for your arguments, ugh), and you can return values, by using the return instruction (duh).

Objects made within the gui are actual objects you can fully manipulate within any script.

On the OO approach, it should also be noted that the engine supports inheritance, the with pointer, and probably polymorphism. Strict encapsulation is not posible since all data members are public (argh).

The big problem with it is the obvious overhead, and the lack of strong typing, which is a curse.
Disch
Posts: 153/202
Originally posted by 1337_Ac3
disch: i just told you in the post that i'm stupid!


Well it was impossible for me to know you said that since I couldn't read your post.

By the way, while your layout is much better, it's still difficult to read for me because I'm using a blue board theme and dark red text on dark blue background clashes very badly.

As for the 2D/3D debate... it sounds like you're talking about two different things. Super Smash Brothers Melee, for example would be considered a 2D game by me (though it has 3D rendering effects -- but I'll address that later). Most puzzle games are best left in 2D (tetris, dr. mario, etc). The SotN Castlevania spinoffs are all 2D, though some (but I don't think all) had 3D rendering effects. Come to think of it... did any of the GBA ones have any? Would rotation be considered a 3D effect? I would consider it one, but again this all depends on how you look at it.


ANYWAY. All modern mainstream systems are built with 3D hardware. So if you want to say that all modern mainstream games are 3D... I guess that does make some sense, though it'd be pretty dumb to say something like that. What I'd consider 3D is something that makes use of 3 dimensions for gameplay -- not for visual effects. Which is why SSBM would be a 2D game -- I mean if you take out the showy effects, it'd play the exact same way on a primarily 2D console like SNES.

Why do modern systems have 3D hardware? Is it because 2D is dumb and outdated? Not at all! The reason is, there's simply no reason not to (except for cost of production). 2D graphics can easily be done with 3D hardware (any 2D rectangle is just a quad in 3D space), but 3D graphics cannot easily be done in 2D hardware. For a game to do 3D raster effects on 2D hardware, it would have to do all the work in software, which would be a major drain on CPU time. In addition... using 3D hardware for 2D allows you various perks which are often not available on 2D hardware, like alpha blending, rotation, flipping, stretching, etc.

So anyway... 2D still has a home. Even now in 2006. And there will always be a place for it. Sometimes 3D just isn't the right way to go with a paticular game.
1337_Ac3
Posts: 6/90
Originally posted by Bio
money? how money do you think Ninendo gonna get with new super Mario bros, or how much they get with super smash bros. melee? probably a lot more that some 3d game

lol if you didn't realize yet, those games ARE 3D! LOL! that was even more stupid, those games are like 90% 3D, its just side scrolling. The same with new super mario bros.. You gotta learn the difference bettwen 2D and 3D already. I tell it to you again. SSBM = 3D side scrolling. NSMB = 3D side scrolling.. got it?
C:/xkas bio.asm
Posts: 673/1209
money? how money do you think Ninendo gonna get with new super Mario bros, or how much they get with super smash bros. melee? probably a lot more that some 3d game
1337_Ac3
Posts: 5/90
Originally posted by Dan
Originally posted by 1337_Ac3
But who wants to make 2D games in the year 2006? maby it was popular in the 90s.. Cmon, open your eyes, there is no reason to make 2D games,

That is without doubt the most retarded thing I've ever read on Acmlm's. Thanks.


Why`?? its not the right thing if you want to make money (Yes, i was talking about the money..)
Dan
Posts: 137/219
Originally posted by 1337_Ac3
But who wants to make 2D games in the year 2006? maby it was popular in the 90s.. Cmon, open your eyes, there is no reason to make 2D games,

That is without doubt the most retarded thing I've ever read on Acmlm's. Thanks.
1337_Ac3
Posts: 3/90
disch: i just told you in the post that i'm stupid! (or was.. damn you beer!) the post you did't bother reading ;S
i changed my post layout.. ffs
Disch
Posts: 149/202
It just blows my mind sometimes how people make such completely idiotic post layouts. I don't read posts which are difficult/stupid/painful to read, but I figure there's no way these people can know they're being stupid unless someone tells them "hey, you're being stupid"

So hey... 1337_Ac3. You're being stupid.
Squash Monster
Posts: 207/296
People who make it far in the world ignore people who talk in marquee tags.

This is universal, no matter what language you program in.
Disch
Posts: 148/202
How the hell do you expect anyone to read your post, numbnuts.

Freaking acmlm's
1337_Ac3
Posts: 2/90
Well i can do nothing else than saying that Disch is right, C/C++ is better than java in that way.. (My tip:Learn C++, not C. C++ is just better). For making 2D games, you could use any friggin language you want. But who wants to make 2D games in the year 2006? maby it was popular in the 90s.. Cmon, open your eyes, there is no reason to make 2D games, learn a language that you can make 3D with instead(I know you can make 3D in GM, but that 3D is just... forget it!). Learn to use a real programing language instead of game maker, you will have hell more use of C++ than game maker skills, if you wanna start at a game company, lets say capcom. Do you think they would want you if you were better at C++ or game maker? Dont waste your life on game maker while you still are young.. Okay, all this might have sounde' stupid, BUT (yes there is a "but") i'm talking about the money making bussines. If you got other plans in your life than computers or programing, sure, make games in game maker as a hobby or to waste some free time. But as i told you, if that's not the case, then learn real programing.

PEACE! (dont tell me that i'm stupid or spell like a drunk monkey.. cuz im both right now ^)
Disch
Posts: 141/202
Originally posted by Squash Monster
You can pull up some interesting data on the speed debate with a little googling. This one is particularilly surprising (data is hidden behind the link in that image in the upper right), though I doubt that Java actually has an edge like it suggests.


One of the links at the bottom of that page was pretty entertaining: This one.

One of the major complaints about the article you linked (without having looked at the source of the test programs) was the following:


I've been accused of biasing the results by using the -O2 option for GCC, supposedly because -O2 optimizes for space, thus slowing down the benchmark. This is not what -O2 does. According to the GCC -O documentation:

-O2: Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. The compiler does not perform loop unrolling or function inlining when you specify -O2. As compared to -O, this option increases both compilation time and the performance of the generated code.

On the other hand, -O3 performs space-speed tradeoffs, and -O performs fewer optimizations. Thus, for these tests, I think -O2 was the best choice.


Considering he's running SPEED tests it would make more sense for him to go with the 'optimize for SPEED' option (-O3). I'm sure the optimizations Java was doing were making space-speed tradeoffs... and if executable size was a factor in these comparisons he should have listed them. But since they weren't, he had absolutely no reason not to go with -O3 here (except to make Java look better, of course). But what would have been preferable was if he did tests with each -O option.

This could explain the huge gap in his results where method calls were concerned (the methcall test on the page you linked indicated g++ took almost 6x as long when the article I linked said it look less than 2x as long).

I mean if Java is being optimized to unroll loops and inline functions and C++ isn't... then, yeah... of COURSE Java is going to be faster. I'll have to check out some of these other benchmarks sometime. I know Java is faster than most people give it credit for... however I still don't buy that it will outperform C/C++ in practical application.



Regarding the rest of your post, you make well thought out and valid points. I still can't say that I really agree with you... however your rationale is definatley much more clear and logical to me now. And your Java suggestion is sitting better with me. And at the end of the day, either language will get the job done.
Squash Monster
Posts: 196/296
You can pull up some interesting data on the speed debate with a little googling. This one is particularilly surprising (data is hidden behind the link in that image in the upper right), though I doubt that Java actually has an edge like it suggests.

But regarding your last question, which bears answering:

First, I'd like to stress that I am not suggesting Java as the be-all end-all game development platform. The ideal professional game development language is always going to be C/C++, unless you are trying to have your game played in a browser, in which case it is Flash for light work and Java for heavy work. However, the ideal casual game development language is whatever you can get your hands on at any given moment -- I, for example, am programming a platformer in TI-92 BASIC during Calculus, and a clone of Joust in JavaScript during lulls at work, the best game ever in iC when I run out of useful stuff to program in a club I attend.

Now, I think you'll understand that I'm not making suggestions under the assumptions of professional development here. Jumping from what is possible in Game Maker to professional level development is a bad idea.

What comes as a question, then, is what you do when "whatever you can get your hands on" is "everything". Personally, I think Java is the best language you're going to find for casual game development, as built-in libraries for nigh everything and a free garbage collector are godsends. There is a certain complexity of project where you're going to want to find more niche versions of all of these, and at that point, feel free to start using a C.


Anyway, my original suggestion was not because I suggest Java in general (which I do), it just worked out that way. I considered all the languages I know and thought about how much farther they'll get you from Game Maker as a starting point.

TI BASIC -- Somewhat less useful than Game Maker, hardly a step forward, not universally available.
JavaScript -- Great if you know functional programming, HTML, and CSS like the back of your hand. A bit like trying to learn anatomy by disecting yourself otherwise.
VB6 -- Almost exactly like Game Maker, but it has functions. (I've mentioned that Game Maker does not do the whole function thing, right?)
C -- From GML, adds functions, pointers, memory management. From GameMaker in general, adds having to deal with loading and drawing images and open windows, which, even at minimum effort, means getting a library set up, which Game Maker gives you no experience with.
C++ -- All the extra stuff of C, plus objects.
Java -- From GML/GameMaker, adds functions, objects, and loading your own images.

So, to recap the good choices:
VB6 adds functions.
C adds functions, pointers, memory management, library setup, and image loading.
Java adds functions, objects, and image loading.

So, VB6 is the ideal if you want incremental progression from GML. But VB6 is not freely available, is no longer supported, and is VB6.

Then Java and C both have the pain of having to load your images in by hand, so that's moot. Both have functions, thank God, so that's moot. It's just a matter of what is worse to subject someone who is just learning functions to -- objects, or pointers, memory management, and library setup.

Objects can be mostly avoided if you really want, so Java is the suggestion I give to the GML guy.
Disch
Posts: 140/202
Originally posted by Squash Monster
The reason for suggesting Java in the first place is that it's fully capable for what's expected, and much easier of a transition.


I guess this where we fundamentally disagree. I'd find Java or C++ to be a more difficult transition than to just straight C. I mean when you think about it.... Java and C++ are pretty much just glorified C. More features to learn... More abstract concepts to grasp. If anything I'd recommend people start with C then work their way up to C++ or Java, not the other way around. C is far more simplistic.

What it comes down to is if you know Java or C++... you already know C. Learning Java first is like learning how to do exponents before learning how to multiply. Which you already basically said yourself:

Switching from Java to C consists of learning how to allocate memory and moving the square brackets when you declare an array.


If he's already familiar with basic programming concepts from having worked with another language (even a game maker sciptish language), then the only thing he has left to learn in C is structs and pointers (as well as language syntax).


The -s argument in Java enables heavier use of dynamic recompilation. In exchange for a bit longer of a load time, the JVM will start to compile whatever code is taking the most processor time and replace the stuff it has been interpreting on the fly with it when it's done. It works better than a lot of real compilers in a large number of situations, primarilly because it knows exactly when to unroll loops.


I'm still skeptical. I find it hard to believe that Java can monitor and profile code speed of the program it's interpretting and dynamically recompile it all while still executing code and running a program.... and somehow be faster than code pre-compiled and optimized for the platform it's being run on? That just doesn't make any sense to me.


The last Java game I wrote that was tested on a lot of computers was a technical demo for explaining random terain generation. At worst, it lagged for the first 6 or so seconds at startup, then proceeded to run at 60 frames per second without any difficulties.


I don't doubt it.

I'm not saying Java isn't capable. I'm saying it isn't preferable. It's like using the back of a wrench to pound in nails. Sure it'll work, but why not use a hammer?


But let's turn this around. I've already stated why I think C or C++ would be a better option. And I've mostly just been hearing you defend Java as a viable candidate. What I'd like to hear is what reasons do you have for saying Java is the better candidate? The only one I've heard so far is that it's an easier transition, which I've already addressed.
Squash Monster
Posts: 195/296
Originally posted by Disch
I'm not saying you CAN'T make a fully functional, high quality game in Java. I'm saying that's not Java's strong point. For someone interested in game developemtn, Java is not the right path to be looking at.
You make it sound as if choice of language is a horribly binding decision. Switching from Java to C consists of learning how to allocate memory and moving the square brackets when you declare an array. The reason for suggesting Java in the first place is that it's fully capable for what's expected, and much easier of a transition.

Originally posted by Disch
While I don't have enough experience with Java to really attack this. I don't believe it for a second (even with your footnote). Going through any kind of VM (even a fast one) is going to do nothing but eat unnecessary CPU time and memory.

(....snip...)

But aside the point. Performance-wise... there is no freaking way in hell any Java program will be faster, smaller, or less demanding than the same C program (when equal effort is put into optimizing them). I'd bet my life on it.
The -s argument in Java enables heavier use of dynamic recompilation. In exchange for a bit longer of a load time, the JVM will start to compile whatever code is taking the most processor time and replace the stuff it has been interpreting on the fly with it when it's done. It works better than a lot of real compilers in a large number of situations, primarilly because it knows exactly when to unroll loops.

I'm not going to attempt to argue that a Java program will be smaller in hardrive or memory footprint than the equivalent C program. That'd be crazy talk. I'm also not really going to recomend it for 3D work -- though yes, you have access to the 3D libraries, Java's floating point system is incompatable with everything and you lose hardware acceleration.

Originally posted by Disch
That's just the thing. It doesn't get any more heavy-duty than game dev. Games are the most demanding kind of program on every aspect of your computer. Memory consumption, video and audio processing, and general CPU power. All has to be done in real time, with little or no latency. As the game gets larger, the shortcomings of a slower language compound. Going for that little bit of extra speed can (and most likely will) make the difference for people with low or mid-range computers.
The last Java game I wrote that was tested on a lot of computers was a technical demo for explaining random terain generation. At worst, it lagged for the first 6 or so seconds at startup, then proceeded to run at 60 frames per second without any difficulties. How complex was it? Well, it was a simple platformer, but when making the game, I made the mistake of redrawing every onscreen tile every frame. Figure that as about 200 more things happening at once than strictly needed to be. You generally don't need more than 200 things happening at once in the first place, so I think Java's a safe bet for 2D games in general.
Disch
Posts: 137/202
Originally posted by Squash Monster
And why isn't game dev one of them?


I'm not saying you CAN'T make a fully functional, high quality game in Java. I'm saying that's not Java's strong point. For someone interested in game developemtn, Java is not the right path to be looking at.

It's very possible to make a super-awesome high-quality fast-paced 3D action game in VB6 -- but that doesn't mean VB6 is the language you should choose when you're interested in making such a game.

Originally posted by Squash Monster
Java and C run at about the same speed*


While I don't have enough experience with Java to really attack this. I don't believe it for a second (even with your footnote). Going through any kind of VM (even a fast one) is going to do nothing but eat unnecessary CPU time and memory.

The key difference between Java's and C/C++'s approach is that C/C++ is meant to be recompiled for each platform, whereas Java isn't. I suppose you could get around that by recompiling the Java game for each target platform, optimized for that platform. But if you're doing that, what's the point of using Java in the first place? (there are infinite libraries available for C/C++ which handle garbage collection and any other aspect Java can offer. In fact I'd wager that there is far more you can do with the libraries available for C/C++ than what's available for Java).

But aside the point. Performance-wise... there is no freaking way in hell any Java program will be faster, smaller, or less demanding than the same C program (when equal effort is put into optimizing them). I'd bet my life on it.


Yes, if you're doing something very heavy-duty, you'll want the extra memory and the speed**


That's just the thing. It doesn't get any more heavy-duty than game dev. Games are the most demanding kind of program on every aspect of your computer. Memory consumption, video and audio processing, and general CPU power. All has to be done in real time, with little or no latency. As the game gets larger, the shortcomings of a slower language compound. Going for that little bit of extra speed can (and most likely will) make the difference for people with low or mid-range computers.

But this comes down to what you feel is "fast enough". Sure, you can get a Java game running at a decent speed for most people. But it will always be a little slower than it needs to be. And for some people that will make the difference between being able to play the game and not being able to.

There's a reason so few commercial games are written in Java.
Squash Monster
Posts: 194/296
And why isn't game dev one of them?

Java and C run at about the same speed*. Java has a very good graphics framework in java.awt that will be more than enough for most 2D games. If that's not enough, both have access to solid graphics libraries in the form of SDL and OpenGL.

The major tradeoff in using Java is that it eats memory. But then, you get java.awt, javax.swing, and a free garbage collector in return. Yes, if you're doing something very heavy-duty, you'll want the extra memory and the speed**. However, I doubt these are the concerns of somebody making their transition out of Game Maker.

*Given you run the JVM with the -s argument, which nobody does but everybody should, and that you use gcc to compile your C, which isn't the best for game development but most people do it anyway.
**If your game uses the garbage collector a lot, doing it by hand is going to help a lot. And my previous comment about speed is mostly void if you use a more appropriate compiler.
Disch
Posts: 135/202
I am downright baffled that Java could be recommended for game development

I mean sure.... Java has its uses. But game dev isn't really one of them.

Pick up some C + SDL (or C + SDL + OpenGL if you want 3D). Same platform independence, but much better suited for game dev, and far less bloated.
1210
Posts: 6/6
Okay. I'll look into it. Thanks for all the advice. Hey, and did you all know that GM can use pretty much any other programming language? You would have to have to be a good preogrammer though.
Squash Monster
Posts: 187/296
As Jagori said, you're going to need the JDK.

You're also probably going to want an IDE, because syntax highlighting is nice, and going into DOS to compile isn't. Any old IDE should work. Netbeans is one, and supposed to be good, though I never really liked it. The people at my office use JBuilder, which has some very awesome tools and some overly complicated configuration stuff needed for every project. I use JCreator LE, which isn't all that great, but works very well and simply for the majority of the things you'll want to do.
This is a long thread. Click here to view it.
Acmlm's Board - I3 Archive - Programming - Game Maker anyone?


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.016 seconds; used 398.34 kB (max 471.02 kB)