Pages: [1] 2 3
  Print  
Author Topic: Project Mario  (Read 9187 times)
Offline (Male) Goombert
Posted on: November 05, 2013, 05:44:33 PM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 2983

View Profile

I have recently managed to get the Project Mario game I made open source working in ENIGMA. Above are the screenshots of how good I managed to get it.

There are a few anomalies still, zwriteenable causes it not to work in OpenGL3, the start menu's do not render correctly, and there are still collision glitches except now they cause the game to crash.

You can download the latest version from the original topic.
http://enigma-dev.org/forums/index.php?topic=1161

I would appreciate if you guys could download and test this for me to ensure it's working as good as I have got it. You will need to update the engine either by redownloading the Portable ZIP if you are on Windows or updating through git.

It would also help if you guys could modify the settings.cfg configuration file and let me know what the highest FPS you can get is. I get around 150-220fps with a %50 reduction in RAM usage from the Game Maker version which uses 93000 K where ENIGMA uses 40000 K
« Last Edit: May 25, 2014, 04:16:53 AM by Robert B Colton » Logged
Offline (Unknown gender) fervi
Reply #1 Posted on: November 05, 2013, 06:02:20 PM
Member
Joined: Feb 2013
Posts: 75

View Profile Email
Quote
There are a few anomalies still, zwriteenable causes it not to work in OpenGL3, the start menu's do not render correctly, and there are still collision glitches except now they cause the game to crash.

Time Traveller?

Line 135, position 9 (absolute 7524): Unknown function or script `ini_open'

Fervi
Logged
Offline (Male) Goombert
Reply #2 Posted on: November 05, 2013, 06:03:27 PM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 2983

View Profile
fervi, I am not sure about it compiling for Linux or not as it uses a lot of the Windows specific features from Game Maker 8.1, however, go to Build->Settings and select "Extensions" and enable ini file system, it allows ini file reading/writing on Linux.
Logged
Offline (Unknown gender) fervi
Reply #3 Posted on: November 06, 2013, 11:55:31 AM
Member
Joined: Feb 2013
Posts: 75

View Profile Email
Quote
.eobjs/Linux/Linux/Run/Universal_System/CallbackArrays.o:(.bss+0x0): multiple definition of `enigma_user::keyboard_lastkey'
.eobjs/Linux/Linux/Run/Platforms/xlib/XLIBmain.o:(.bss+0x40): first defined here
.eobjs/Linux/Linux/Run/SHELLmain.o: In function `enigma::OBJ_obj_gamestate::myevent_beginstep()':
SHELLmain.cpp:(.text+0x1e33a): undefined reference to `enigma_user::current_time'
.eobjs/Linux/Linux/Run/SHELLmain.o: In function `enigma::OBJ_obj_gamestate::myevent_gamestart()':
SHELLmain.cpp:(.text+0x2b476): undefined reference to `enigma_user::current_time'
SHELLmain.cpp:(.text+0x2b492): undefined reference to `enigma_user::current_time'
collect2: error: ld returned 1 exit status

Fervi
Logged
Offline (Male) Goombert
Reply #4 Posted on: November 17, 2013, 06:48:00 PM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 2983

View Profile
fervi, ok the first issue was a mistake I made with fixing that constant for Windows I need to commit this, but just apply this fix...
enigma-dev/ENIGMAsystem/SHELL/Platforms/Xlib/XLIBmain.cpp
Line #42, replace it with...
Code: [Select]
  extern int keyboard_lastkey;
And the second issue there is that constant variable not being implemented for XLIB, so just go find it in those objects it says and replace current_time with 1, since my game don't actually use it for anything yet.


Ok, I got the projection functions fixed and the start menu working properly. This was the pull request.
https://github.com/enigma-dev/enigma-dev/pull/524
Logged
Offline (Male) time-killer-games
Reply #5 Posted on: April 01, 2014, 08:29:08 AM

Member
Location: Virginia Beach
Joined: Jan 2013
Posts: 1050

View Profile WWW Email
Robert, I asked this a while back if I could use your editable to make a precise 3D collision engine based on your code, sorry for the major delay, To give you a heads up, I completed it but lost my modified gmk so I'm just going to do it again. It shouldn't take but roughly two days now, because this time I'm already familiar enough with your code and how it works. I'm un-banned from the GMC, as of recent news, (anyone who's wondering my username over there is 'Samuel Venable' now), so I'll credit you when sharing the engine on both the GMC and YYG Sandbox. :D I'm still very impressed you made precise 3D in GM without any DLL, Ididn't know that was possible until I tested it hands on. Though I'm going to add a means to convert the regular gm models to collision models so people won't have to do it manually, as well as a way to detect collisions directly from code, so the collision models won't have to be stored as an external include file.

So as to why I posted this, how should I credit you? You are still banned from the GMC. I can't link to your profile here because I can't advertise ENIGMA without breaking the rules. Do you have a website or contact email you wouldn't mind sharing? I'd like to include this in the commented credits. :)

Cheers. :)
Logged
Offline (Unknown gender) TheExDeus
Reply #6 Posted on: April 01, 2014, 08:52:57 AM

Developer
Joined: Apr 2008
Posts: 1886

View Profile
Quote
made precise 3D in GM without any DLL
Just FYI 99% of things are possible in GM without DLL's. They might be slow, but possible. That is why I loved GM's idea so much, because I could make anything I ever wanted in it (starting from Diablo2 clones to ray-tracing engines with reflective surfaces) and it wasn't really that hard (compared to much lower level languages). People who think GM is limited think that way only because themselves are limited.

Same of course with ENIGMA.

P.s. 1% you couldn't do is connected to stuff done by OS. Like you can't implement your own window_minimize() function in GML.
Logged
Offline (Unknown gender) Ideka
Reply #7 Posted on: April 03, 2014, 08:31:41 AM

Member
Joined: Apr 2011
Posts: 86

View Profile
People who think GM is limited think that way only because themselves are limited.

Same of course with ENIGMA.
Right. But consider:
Quote
[...] I'm going to use a hypothetical language called Blub. Blub falls right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language.

And in fact, our hypothetical Blub programmer wouldn't use either of them. Of course he wouldn't program in machine language. That's what compilers are for. And as for Cobol, he doesn't know how anyone can get anything done with it. It doesn't even have x (Blub feature of your choice).

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.
(From http://www.paulgraham.com/avg.html.)
Logged
Offline (Unknown gender) TheExDeus
Reply #8 Posted on: April 03, 2014, 01:42:10 PM

Developer
Joined: Apr 2008
Posts: 1886

View Profile
I wasn't arguing whether language X is better than language Y. I was just saying that "GML/EDL is limited, because just look at the games made in them" argument is wrong. I have personally never encountered many limitations in GM. If I can make a Diablo2 clone, a Bastion clone or any other type of 2D game, then I don't see how they are limited. They have clearly succeeded, as they are 2D game tools. Right now slowly going into 3D.
And I don't believe in this "Power continuum", because never language X is totally better than language Y. Every language has it's own uses. I now program in C++ daily and while it might be higher in the "power continuum", it is still not my number one language when I need to make a 2D graphical program. Actually I might never make a 2D game or a program in anything else than ENIGMA.
Also, "feature" doesn't mean "better". Python has a lot of features and is higher level than C++, yet I dislike that language to the bone. It's not better in anything. Except maybe in eduction just because it's easier. But then again you could just use GML/EDL for that.
Logged
Offline (Male) Rusky
Reply #9 Posted on: April 03, 2014, 05:00:33 PM

Resident Troll
Joined: Feb 2008
Posts: 960
MSN Messenger - rpjohnst@gmail.com
View Profile WWW Email
I don't think it's wrong to say GM's design makes it easier than some other designs to make sloppy games. Obviously it doesn't force it or even make it too hard to avoid, but neither is it anywhere near the best possible design.
Logged
Offline (Male) Goombert
Reply #10 Posted on: April 03, 2014, 05:10:55 PM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 2983

View Profile
I agree more with what Harri told me the one other time, that GM provided a basic abstraction framework that allowed more advanced things to be done through extensions. GM served as a good windowing and basic platform that could be easily extended. That I found to be a good argument, sadly it's no longer true about GM.
Logged
Offline (Unknown gender) Ideka
Reply #11 Posted on: April 03, 2014, 06:13:08 PM

Member
Joined: Apr 2011
Posts: 86

View Profile
I wasn't arguing whether language X is better than language Y.
Good. Me neither.
I was just saying that "GML/EDL is limited, because just look at the games made in them" argument is wrong.
I agree.
And I don't believe in this "Power continuum", because never language X is totally better than language Y. Every language has it's own uses. I now program in C++ daily and while it might be higher in the "power continuum", it is still not my number one language when I need to make a 2D graphical program. Actually I might never make a 2D game or a program in anything else than ENIGMA.
Also, "feature" doesn't mean "better". Python has a lot of features and is higher level than C++, yet I dislike that language to the bone. It's not better in anything. Except maybe in eduction just because it's easier. But then again you could just use GML/EDL for that.
From the same essay:
Quote
Or how about Perl 4? Between Perl 4 and Perl 5, lexical closures got added to the language. Most Perl hackers would agree that Perl 5 is more powerful than Perl 4. But once you've admitted that, you've admitted that one high level language can be more powerful than another. And it follows inexorably that, except in special cases, you ought to use the most powerful you can get.
Paul Grahm really knows his shit, and I think he makes a good argument (the whole thing is worth a read, btw).
When you say that "every language has it's own uses" (sic.), you're probably thinking about things like "Java is good for multi-platform because the .jar is platform-independent", "C++ is good for performance-critical stuff because it's fast" or "GML is good for game development because it has a whole environment (GM) dedicated to it". Forget about all of that. These are all properties not of the languages, but of their most popular or only implementations. I'm talking about languages on their own.

Anyway my point was that even though you can get pretty much anything done in GM, its language is rather limited, as you should clearly be able to see, being a C++ programmer yourself.
I have personally never encountered many limitations in GM. If I can make a Diablo2 clone, a Bastion clone or any other type of 2D game, then I don't see how they are limited. They have clearly succeeded, as they are 2D game tools. Right now slowly going into 3D.
Well, you could probably do that with any turing complete language. You could do it in assembly if you really wanted.
Logged
Offline (Male) time-killer-games
Reply #12 Posted on: April 03, 2014, 06:45:53 PM

Member
Location: Virginia Beach
Joined: Jan 2013
Posts: 1050

View Profile WWW Email
Oh no, we're getting off topic again
Logged
Offline (Male) Rusky
Reply #13 Posted on: April 03, 2014, 07:13:14 PM

Resident Troll
Joined: Feb 2008
Posts: 960
MSN Messenger - rpjohnst@gmail.com
View Profile WWW Email
The problem with PG's essay, although his points about relative power of languages and "blub programming" are good, is that he then concludes that Lisp is the most powerful, which is basically him walking right into his own blub programmer description. Lisp is his blub. :P
Logged
Offline (Unknown gender) TheExDeus
Reply #14 Posted on: April 03, 2014, 07:15:57 PM

Developer
Joined: Apr 2008
Posts: 1886

View Profile
Quote
I don't think it's wrong to say GM's design makes it easier than some other designs to make sloppy games. Obviously it doesn't force it or even make it too hard to avoid, but neither is it anywhere near the best possible design.
Any engine that is easy to use will allow sloppy games. You can create a window and draw sprite using few lines in Python as well (including the right libraries of course) and that usually ends up as crappy pac-man's as well. I don't think GM's design is the reason there are sloppy games (as in GM's design is bad or limited), but I think it's because of it's simplicity. If you write in C++ 95% of new people trying to make a game will fail to draw a triangle (especially in GL3 and above). Even if they use ready made graphics engines it's often very hard to do in C++. In that case people will give up before they can even make a sloppy game.

Quote
I agree more with what Harri told me the one other time, that GM provided a basic abstraction framework that allowed more advanced things to be done through extensions.
Yeah, and with that I also meant to show that high-level/low-level thing going on with GM's design (and specifically GML). It's easy to make what you want, but you actually have to make it yourself. Like all the engines I have ever touched are either in two groups - very high-level - implements everything you would ever need, their own AI, specific scripting, function for drawing GUI's that are different from functions drawing on textures etc. And the other ones are very low-level - if you want to draw text, then create a texture, load the file, specify texture coordinates, draw the quad, maybe even write a shader to draw that quad etc. GM somehow managed to be in between both of those and I always admired that. I am yet to find an engine that allows me to write text on screen using one line of code (without any other lines) and the same time make my own 3D ray-tracing engine. Like try making a ray-tracing engine inside UE4 without recoding their whole source.

Quote
Anyway my point was that even though you can get pretty much anything done in GM, its language is rather limited, as you should clearly be able to see, being a C++ programmer yourself.
I truly don't see that. I don't find "different" to be the same as "limiting".

Quote
You could do it in assembly if you really wanted.
True. You could do it even writing only 1 instruction for a million times (on a one instruction set computer http://en.wikipedia.org/wiki/One_instruction_set_computer).
« Last Edit: April 03, 2014, 07:25:27 PM by TheExDeus » Logged
Pages: [1] 2 3
  Print