|
|
|
Josh @ Dreamland
|
|
Reply #3 Posted on: January 29, 2009, 06:05:43 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
DLL Support: Any date? Seriously. I'm not going to be using this for 2d. GM's 2d capabilities are fine. OpticalLiam was really looking forward to that, too, so I will probably give it a shot before next release. Note that they will almost definitely not work on Linux. GM7 Support: Does it work? LateralGM supports GMK files. The, er, three functions they added between 6 and 7 are already implemented. It functions on Vista as well. Enigma: What is it? How the f*ck does it work? Why is Lateral GM included? Should I just stick with making console games in C++? It parses your code into C++. It uses OpenGL as the graphics system, and WinApi for Windows windows, Xlib for Linux windows. It makes things easier by doing a good amount of recoding for you, as well as coming with a lot of premade functions that simplify things further and remove pointers from the picture. (Which I'm considering making optional) The real benefit to be seen now is that your games can't be decompiled by an automated tool. Variables: Can I now have a boolean variable for a "global" variable that only has two values? Sure you can, but note that a boolean still takes up four bytes even if there's just one of them, as a rule of C++. Objects: Can I have empty objects that just compute? Can I turn off all step 'events' and collision 'events'? How does object count affect FPS? Next release, for certain. I've got most of a new system done (I work on different things intermediately) that will let you remove everything altogether, including ID. (It will be replaced by C++'s this (which is a pointer to the current instance) Count doesn't affect FPS very much at all. Like in GM, having a hundred thousand objects won't even slow the game now, as long as they don't have events. Code runs faster by nature in ENIGMA, though, as it's compiled. Inheritance: More than one? Heredity isn't implemented yet. I was hoping to get it integrated in the new instance system I mentioned earlier. Unlike my critics would have you believe, it isn't as easy as adding the word struct before the code you enter in LGM and sending it to GCC. I can't just use C++ heredity and have everything work the same way; if I did that, instance_nearest and the like wouldn't recognize child objects as a type of the object you pass it. That's the big reason I haven't just done it as a five minute task. I'll see about getting it implemented in the new system. Permissions: Can I make object variables inaccessible by other objects? I don't know why you would want to, so I haven't implemented it. If you can give me a good reason for it, I'll add a keyword for it. (Rather, I'll abuse C++'s private keyword and use it as a declarator like Java does) Ownage Factor: Good enough to own GM? We're getting there. A few people said GM died when I implemented build mode, but I think that was the excitement of something totally new talking, rather than the big picture.
|
|
« Last Edit: January 29, 2009, 06:26:03 pm by Josh @ Dreamland »
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
skarik
|
|
Reply #4 Posted on: February 02, 2009, 10:31:15 pm |
|
|
Joined: Jul 2008
Posts: 46
|
OpticalLiam was really looking forward to that, too, so I will probably give it a shot before next release. Note that they will almost definitely not work on Linux. I don't mind if it the game won't work on linux, though that would definitely be a plus. It wouldn't really work though, would it? I mean, Wine is already messed up enough. Half Life 2 on Linux was awesome though. Ah, the epic-ness... By the way, I noticed that the list says no screen_redraw(). What's with that? That's my baby! I must turn automatic drawing off if I'm in 2d. Then again, I probably do want to use this with 2d. There is a few problems with the speed in GM7, though, when not at full screen which is the weirdest crap. (45 FPS to 123? How does fullscreen do that?) Anyhow, this thingy seems pretty kickass. The, er, three functions they added between 6 and 7 are already implemented. It functions on Vista as well. Well, you know, there's some things out there that just taste GM7 and then throw up. How about the functions from GM5? I loved those, especially the drawing functions/tools. It parses your code into C++. It uses OpenGL as the graphics system, and WinApi for Windows windows, Xlib for Linux windows. It makes things easier by doing a good amount of recoding for you, as well as coming with a lot of premade functions that simplify things further and remove pointers from the picture. (Which I'm considering making optional) The real benefit to be seen now is that your games can't be decompiled by an automated tool. So I get a compiled game? I should at least finish something in C++ first, because this makes me feel guilty. Next release, for certain. I've got most of a new system done (I work on different things intermediately) that will let you remove everything altogether, including ID. (It will be replaced by C++'s this (which is a pointer to the current instance) Count doesn't affect FPS very much at all. Like in GM, having a hundred thousand objects won't even slow the game now, as long as they don't have events. Code runs faster by nature in ENIGMA, though, as it's compiled. That this is awesome. One of those few things I understood when the basics of C++ became less basic. Unlike my critics would have you believe, it isn't as easy as adding the word struct before the code you enter in LGM and sending it to GCC. I can't just use C++ heredity and have everything work the same way; if I did that, instance_nearest and the like wouldn't recognize child objects as a type of the object you pass it. That's the big reason I haven't just done it as a five minute task. I'll see about getting it implemented in the new system. I see. I don't know why you would want to, so I haven't implemented it. If you can give me a good reason for it, I'll add a keyword for it. (Rather, I'll abuse C++'s private keyword and use it as a declarator like Java does) Nah, don't abuse anything. Just keep it solid. We're getting there. A few people said GM died when I implemented build mode, but I think that was the excitement of something totally new talking, rather than the big picture. Reminds me of how Ultimate3d was at version 1.31. Sucked balls and was dang slow. It took a few years for it to grow, but it did grow. Basically, it's now that GM slows down U3D, which rocks. I really hope this project grows.
|
|
|
Logged
|
~~
|
|
|
sprintf()
|
|
Reply #5 Posted on: February 02, 2009, 11:09:59 pm |
|
|
"Past Contributor" Location: S. Wales Joined: Apr 2008
Posts: 72
|
Note that they will almost definitely not work on Linux. Um... Why? Linux provides an interface for DLLs very similar to Windows. http://www.ibm.com/developerworks/linux/library/l-dll.html [ibm.com] Sure you can, but note that a boolean still takes up four bytes even if there's just one of them, as a rule of C++. One, at minimum [cplusplus.com]. Incidentally, it's 4:32 AM.
|
|
« Last Edit: February 02, 2009, 11:32:51 pm by bigmoron »
|
Logged
|
|
|
|
score_under
|
|
Reply #6 Posted on: February 03, 2009, 06:33:22 am |
|
|
Joined: Aug 2008
Posts: 308
|
If you have 8 custom-made boolean variables, they can each take up 1/8 of a byte, if you use the right macros.
#include <stdio.h> #define GetBool(var,pos) ((var>>pos)&1) #define SetBool(var,pos,setto) (var=((var&~(1<<pos))|(setto<<pos)))
unsigned short AllBools; //2 bytes = 16 vars
int main() { SetBool(AllBools,0,1); SetBool(AllBools,1,0); SetBool(AllBools,2,1); SetBool(AllBools,3,0); SetBool(AllBools,4,1); SetBool(AllBools,5,0); SetBool(AllBools,6,1); SetBool(AllBools,7,0); SetBool(AllBools,8,1); SetBool(AllBools,9,0); SetBool(AllBools,10,1); SetBool(AllBools,11,0); SetBool(AllBools,12,1); SetBool(AllBools,13,0); SetBool(AllBools,14,1); SetBool(AllBools,15,0); //Or whatever. if(GetBool(AllBools,14)) { printf("Hooray.\n"); } if(!GetBool(AllBools,9)) { printf("Hooray.\n"); } return 0; }
For extra points, you can #define each of the indices to make them work more like variables.
|
|
|
Logged
|
|
|
|
Josh @ Dreamland
|
|
Reply #7 Posted on: February 15, 2009, 05:13:56 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
So yeah, um, topic split cuz because.
And er, there actually is a screen_redraw(), I'm just too lazy to update the list.
Does that answer all your questions?
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
|
|
|
|
|
|
|