ENIGMA Forums

Development => Works in Progress => Topic started by: Goombert on April 09, 2013, 09:56:00 pm

Title: Project Mario
Post by: Goombert on April 09, 2013, 09:56:00 pm
(http://enigma-dev.org/docs/wiki/images/a/a8/PMlogo.png)

Project Mario started when I decided to make a few modifications to Slayer 64's (GMC Member) conversion of Project Kingspace. Before I knew it I was writing an entire Mario clone, it just happened like that. Project Mario is meant to be a 3D Platforming example for GM programmers, who might be interested in programming a game in the genre. I attempt in no way to make this a full game only a few levels and examples and some custom created graphics, as to not use copyrighted material. Feel free to use anything in the example, including textures, resources, audio, and code. You do not have to credit me but some of the GMC members and others who helped make this open source project would appreciate recognition for their work!

Download: https://enigma-dev.org/edc/games.php?game=76
Size: 12.7 MB
Last Updated: 1/1/2018

http://www.youtube.com/watch?v=phxxMPSLqC4

(http://enigma-dev.org/docs/wiki/images/6/65/PMario3.png)(http://enigma-dev.org/docs/wiki/images/d/d7/PMario1.png)(http://enigma-dev.org/docs/wiki/images/e/ec/PMario0.png)(http://enigma-dev.org/docs/wiki/images/2/21/Pmario2.png)
Title: Re: Project Mario
Post by: gra on April 11, 2013, 01:54:54 am
great project. good Robert.
Title: Re: Project Mario
Post by: Goombert on April 11, 2013, 02:17:54 am
Thanks gra! It still needs converted, I just moved it here so the source code is available since YYG kicked me off their site.
Title: Re: Project Mario
Post by: gra on April 11, 2013, 02:25:10 am
Quote
since YYG kicked me off their site.
it's normal  ;D , YYG have recognize ENIGMA power  (Y)
a question , but enigma ,to actual state,can load the d3d model?
from blender how can create the d3d model?
Title: Re: Project Mario
Post by: Goombert on April 11, 2013, 02:44:26 am
There shivering in fear gra  :D And we shall prevail!!!

D3D models are hard, you have to use a converter to get them from obj and stuff. Just google around there are plenty, or else make the model with some D3D model editor. Eventually gra were going to support obj's and all the other popular model formats.  (Y)
Title: Re: Project Mario
Post by: gra on April 11, 2013, 04:53:25 am
not is a bad idea, i have in mind a 3d project with my models  (Y)
anyway Mario Project is very good , i don't have idea that with GM can do this  (Y)
Title: Re: Project Mario
Post by: slojanko on July 16, 2013, 11:48:04 am
Just stunning :)
Title: Re: Project Mario
Post by: x on August 16, 2013, 09:07:12 pm
Quote
since YYG kicked me off their site.
it's normal  ;D , YYG have recognize ENIGMA power  (Y)

Hi guys, sorry to raise this thread from the dead. But I'm really interested into what's going on between GM and ENIGMA. Why would YYG kick you off for using an engine that stemmed from their own?

Very nice game btw!
x
Title: Re: Project Mario
Post by: time-killer-games on August 16, 2013, 09:40:47 pm
Because it ENIGMA competes with GM, anyone who advertises ENIGMA on their site is seen as a threat.
Title: Re: Project Mario
Post by: x on August 16, 2013, 11:43:10 pm
That's a shame. :(
Title: Re: Project Mario
Post by: Josh @ Dreamland on August 17, 2013, 09:11:22 am
We're over it. The staff pretends not to see us as a threat, despite—and these are the words of their own userbase—stealing our idea and marketing it for hundreds.

Here's a quote Robert really liked that one of them deleted from their site (it was since reposted as a quote from someone else):
Quote
Take the YYC for instance, they've been marketing it as LLVM when in reality it does exactly what ENIGMA does, which I've personally seen the lead developers of GM talk **** about multiple times (check Twitter for instance), now I'm not saying ENIGMA is a good tool, in fact I'm saying the exact opposite, that's why the YYC is snake oil. It's not LLVM regardless of what YYG is telling you, it's GML translated into (poor and improper) C++ and then compiled with clang (a C/C++ LLVM compiler) and linked against their runner compiled as a library.

The unfortunate truth is that they're not a great company, and we're a non-profit, non-salary, no-donation, contribution-based organization. We're practically rag-tag, so we're not doing a fantastic job of showing them up. The difference is the price tag and our ability to admit to our own inadequacies.

That said, this is a discussion for another thread.
Title: Re: Project Mario
Post by: DarkAceZ on August 23, 2013, 09:15:21 pm
Why would YYG kick you off for using an engine that stemmed from their own?
ya idk cept he kinda spammed it iirc
"it" being enigma threads
Title: Re: Project Mario
Post by: Facet on October 26, 2013, 01:13:47 pm
Maybe off topic a little, but we talked already about 3d for enigma. What about idea of Sketchup plugin for models importing? I used it with hammer, source engine and it works well. And making 3d models in sketchup is just trivial easy. Maybe I still can find models on my old hd, it was arcade machine model and some bowling lane with machine, for my costom L4D2 campaign, canceled finally, but models was ok :)
Title: Re: Project Mario
Post by: Goombert on October 26, 2013, 07:58:03 pm
Sketchup would be a plugin, but that is used more for architecture and design not games. I am more interested in Blender and other formats, but we have an obj model loader already.
Title: Re: Project Mario
Post by: Facet on October 27, 2013, 01:53:41 pm
More for architecture - that's right. But you can create any static model, even very detailed. Benefits - is more than very easy in use, excelent for buildings but not only. Blender, nah I just don't like blender. I tried it when it start and few times later, but I still can't work in blender, I know, others can. But I know a lot of people who hate Blender too.
Title: Re: Project Mario
Post by: time-killer-games on October 27, 2013, 03:13:03 pm
Blender is a royal pain for creating precise / linear models. At least for me. I like sketch up better personally but I can't afford to buy pro for commercial use so in the meantime I'm tolerating blender

PS sculptris is perfect for natural, organic shaped models. The high polygon count can be an issue when loading the models into enigma, but it's nothing blender's decimate modifier can't solve.
Title: Re: Project Mario
Post by: db on November 05, 2013, 04:27:08 pm
This is insane. How the hell...you are a wizard!
Title: Re: Project Mario
Post by: aFoxNamedMorris on December 03, 2013, 12:22:37 am
Hiya! I've been trying to find a Linux-compatible version of GM for ages... ENIGMA is the first real answer to that that I've found. I tried to play your game using both versions of the project file, but I can't get the game to load due to the engine complaining about ini related calls in the scripts. Any help getting this to work would be great.

Thanks in advance,

~a nerd

EDIT:>> After some tinkering, I discovered the API settings and enabled ini support. The game compiles, but the window comes up for only a frame and I get the message "Game returned 0". Any suggestions?
Title: Re: Project Mario
Post by: Sslaxx on December 03, 2013, 06:58:59 am
Good question. Had it working here. Might be the version of OpenGL you're compiling with?
Title: Re: Project Mario
Post by: AsuMagic on December 03, 2013, 10:07:28 am
Actually Project Mario has been tested on OGL 1.0 .
Title: Re: Project Mario
Post by: Goombert on December 04, 2013, 05:27:28 pm
Quote
The game compiles, but the window comes up for only a frame and I get the message "Game returned 0". Any suggestions?
Yes, finish the Unix Mac/Linux ini extension :P The Windows version works perfectly since it just uses the Windows API from windows.h, DaSpirit wrote the Linux ini functions and they probably aren't quite finished.

Also, thanks you guys for the nice comments. And yes it is confirmed working in all 3 graphics systems on Windows as of the latest repository.
Title: Re: Project Mario
Post by: aFoxNamedMorris on December 04, 2013, 07:15:32 pm
Good question. Had it working here. Might be the version of OpenGL you're compiling with?

I tried both of them (1.1 and 3.0). No dice. I'm going to wait a bit till ENIGMA gets a little more done on the 'Nix side of things. Very few project files work for me out of the box.
Title: Re: Project Mario
Post by: polygone on December 10, 2013, 12:46:22 am
Still a few bugs to iron out in DirectX, and it isn't running very fast for some reason? It's working nice in GL1 though (after I remove water object due to surfaces). The collisions seem a little buggy though fro some reason? If you try jumping on one of the platforms with coins on it's buggy not the same as in GM.

As for the the game it would be neat to develop it further, iron out the bugs in the engine and make the controls smooth.
Title: Re: Project Mario
Post by: Goombert on January 10, 2014, 04:32:13 am
I have now fixed the random crash in the ENIGMA version, the issue was my code causing an out of bounds on a data structure list. The ENIGMA version now works exactly the same as the GM version without crashing, better performance and much less memory usage. You can redownload from the link in the original post.
Title: Re: Project Mario
Post by: schmeidlerDev on May 11, 2014, 07:42:52 pm

EDIT: well that was a fail. I quoted the wrong post. But it said that you are a wizard lol


Yeah so basically this guy said what I was going to say. You are a wizard man. Well done!!!
Title: Re: Project Mario
Post by: darkhog on May 23, 2014, 07:58:43 am
Pretty cool! Actually this is first fan-made 3D Mario game that I've seen (not counting those silly first person mario projects). Can someone make video of it? Also how is gameplay? It is good?
Title: Re: Project Mario
Post by: Goombert on May 23, 2014, 01:03:37 pm
Darkhog, there is a video, I host them on my personal Youtube.  (Y)
https://www.youtube.com/watch?v=phxxMPSLqC4
Title: Re: Project Mario
Post by: fervi on June 02, 2014, 05:21:22 am
http://gmclan.org/up6184_0_enigma_mario.html

I got error when I compile mario
Report it?

Fervi
Title: Re: Project Mario
Post by: Goombert on June 02, 2014, 09:53:34 am
Fervi, it is unlikely to build for Linux right now because there are no working INI functions for XLIB yet.
Title: Re: Project Mario
Post by: sorlok_reaves on June 13, 2014, 07:52:21 pm
I was able to get Project Mario to build and run on Linux with the Ini Extension. There's a few problems with it though:

1) Some random bugs. I'll file a pull request with my fixes.

2) Textures (or more likely polygons?) loading improperly:

(http://i.imgur.com/QO5KOPN.png)

3) Filename case sensitivity issues. I've edited the project file to fix these:
https://drive.google.com/file/d/0B1P7NepPcOslQXZHMEVkZVBtb0E/edit

Basically, here are the things I changed:
Code: [Select]
//Replace all backslashes with forward slashes in path names in the following files/objects:
./Objects/obj_map.obj:d3d_model_load(model, working_directory + "\maps\koopafalls\map_mod.d3d");
./Objects/obj_map.obj:texture = background_get_texture(background_add(working_directory + "\maps\koopafalls\texture.png", 0, 0));
./Objects/obj_map.obj:fname = working_directory + "\maps\koopafalls\map_col.d3d";
./Objects/obj_gamestate.obj:    path = working_directory + "\screenshots";
./Objects/obj_gamestate.obj:    path += "\";
./Objects/obj_gamestate.obj:    file = file_text_open_read(working_directory + "\maps\koopafalls\objects.dat");
./Objects/obj_tree.obj:    sound = sound_add(working_directory + "\Audio\Ambience\bird1.wav", 0, 1);
./Objects/obj_waterfall.obj:file = file_text_open_read(working_directory + "\maps\koopafalls\waterfall.d3d");
./Objects/obj_water.obj://surface_save(texturesurface, working_directory + "\test.png");

//Rename *.WAV to *.wav for the following files:
./ProjectMario/audio/ambience/bird1.WAV
./ProjectMario/audio/ambience/bird2.WAV
./ProjectMario/audio/ambience/bird3.WAV
./ProjectMario/audio/boing.WAV
./ProjectMario/audio/boo.WAV
./ProjectMario/audio/bowser/bowser_die.WAV
./ProjectMario/audio/bowser/bowser_fire.WAV
./ProjectMario/audio/bowser/bowser_grab.WAV
./ProjectMario/audio/bowser/bowser_inhale.WAV
./ProjectMario/audio/bowser/bowser_something.WAV
./ProjectMario/audio/bowser/bowser_step.WAV
./ProjectMario/audio/boxbreak.WAV
./ProjectMario/audio/bubble.WAV
./ProjectMario/audio/cannon1.WAV
./ProjectMario/audio/cannon2.WAV
./ProjectMario/audio/cannon3.WAV
./ProjectMario/audio/cannon_fire.WAV
./ProjectMario/audio/chomp.WAV
./ProjectMario/audio/crank.WAV
./ProjectMario/audio/movement/crawl.WAV
./ProjectMario/audio/ambience/cricket.WAV
./ProjectMario/audio/door_close.WAV
./ProjectMario/audio/door_metal.WAV
./ProjectMario/audio/door_open.WAV
./ProjectMario/audio/door_wood.WAV
./ProjectMario/audio/enter_painting.WAV
./ProjectMario/audio/explosion.WAV
./ProjectMario/audio/fuse_lite.WAV
./ProjectMario/audio/fuse_loop.WAV
./ProjectMario/audio/gunshot.WAV
./ProjectMario/audio/invalid.WAV
./ProjectMario/audio/lakitucam.WAV
./ProjectMario/audio/laser.WAV
./ProjectMario/audio/mario/mario_boing.WAV
./ProjectMario/audio/mario/mario_cough.WAV
./ProjectMario/audio/mario/mario_die.WAV
./ProjectMario/audio/mario/mario_doh.WAV
./ProjectMario/audio/mario/sleeping/mario_dream.WAV
./ProjectMario/audio/mario/mario_drown.WAV
./ProjectMario/audio/mario/mario_fire.WAV
./ProjectMario/audio/mario/mario_gameover.WAV
./ProjectMario/audio/mario/mario_haha.WAV
./ProjectMario/audio/mario/mario_hello.WAV
./ProjectMario/audio/mario/mario_herewego.WAV
./ProjectMario/audio/mario/mario_hoo.WAV
./ProjectMario/audio/mario/sleeping/mario_imtired.WAV
./ProjectMario/audio/mario/mario_itsme.WAV
./ProjectMario/audio/mario/mario_letsgo.WAV
./ProjectMario/audio/mario/mario_lift.WAV
./ProjectMario/audio/mario/mario_lowonhealth.WAV
./ProjectMario/audio/mario/mario_mamamia.WAV
./ProjectMario/audio/mario/mario_okiedokie.WAV
./ProjectMario/audio/mario/mario_oof.WAV
./ProjectMario/audio/mario/mario_pain.WAV
./ProjectMario/audio/mario/mario_presstart.WAV
./ProjectMario/audio/mario/mario_pullup.WAV
./ProjectMario/audio/mario/mario_scream.WAV
./ProjectMario/audio/mario/sleeping/mario_snore1.WAV
./ProjectMario/audio/mario/sleeping/mario_snore2.WAV
./ProjectMario/audio/mario/mario_solongbowser.WAV
./ProjectMario/audio/mario/mario_theend.WAV
./ProjectMario/audio/mario/mario_ugh.WAV
./ProjectMario/audio/mario/mario_ungh.WAV
./ProjectMario/audio/mario/movement/mario_wa.WAV
./ProjectMario/audio/mario/movement/mario_waha.WAV
./ProjectMario/audio/mario/mario_whoa.WAV
./ProjectMario/audio/mario/movement/mario_woo.WAV
./ProjectMario/audio/mario/movement/mario_woohoo.WAV
./ProjectMario/audio/mario/mario_ya.WAV
./ProjectMario/audio/mario/mario_yah.WAV
./ProjectMario/audio/mario/mario_yahh.WAV
./ProjectMario/audio/mario/movement/mario_yahoo.WAV
./ProjectMario/audio/mario/sleeping/mario_yawn.WAV
./ProjectMario/audio/mario/movement/mario_yippee.WAV
./ProjectMario/audio/mips-hop.WAV
./ProjectMario/audio/monkey1.WAV
./ProjectMario/audio/peach/peach1.WAV
./ProjectMario/audio/peach/peach2.WAV
./ProjectMario/audio/peach/peach3.WAV
./ProjectMario/audio/peach/peach4.WAV
./ProjectMario/audio/peach/peach5.WAV
./ProjectMario/audio/peach/peach6.WAV
./ProjectMario/audio/peach/peach7.WAV
./ProjectMario/audio/peach/peach8.WAV
./ProjectMario/audio/peach/peach9.WAV
./ProjectMario/audio/penguin.WAV
./ProjectMario/audio/pokeoutofsand.WAV
./ProjectMario/audio/movement/slide/slide1.WAV
./ProjectMario/audio/movement/slide/slide2.WAV
./ProjectMario/audio/movement/slide/slide3.WAV
./ProjectMario/audio/movement/slide/slide4.WAV
./ProjectMario/audio/movement/slide/slide5.WAV
./ProjectMario/audio/movement/slide/slide6.WAV
./ProjectMario/audio/movement/slide/slide7.WAV
./ProjectMario/audio/movement/splash.WAV
./ProjectMario/audio/movement/step_floor.WAV
./ProjectMario/audio/movement/step_grass.WAV
./ProjectMario/audio/movement/step_longgrass.WAV
./ProjectMario/audio/movement/step_metalcap.WAV
./ProjectMario/audio/movement/step_wetwood.WAV
./ProjectMario/audio/movement/swim_above.WAV
./ProjectMario/audio/movement/swim_below.WAV
./ProjectMario/audio/thwomp.WAV
./ProjectMario/audio/timer.WAV
./ProjectMario/audio/tinyzap.WAV
./ProjectMario/audio/vulturewound.WAV
./ProjectMario/audio/warp1.WAV
./ProjectMario/audio/warp2.WAV
./ProjectMario/audio/water.WAV
./ProjectMario/audio/ambience/waterfall.WAV
./ProjectMario/audio/ambience/waterfall2.WAV
./ProjectMario/audio/ambience/wind.WAV

I've only tested this with the Open GL 1.1 backend at the moment.
Title: Re: Project Mario
Post by: Goombert on June 14, 2014, 12:04:41 pm
Good work Sorlok, DaSpirit wrote that INI extension but never finished. Second, the issues you are seeing with geometry are related to the model struct for GL1. Josh fixed it for GL3, it has to do with how we handle color, but he didn't add the fixes to GL1.

https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL1/GLModelStruct.h#L133
https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3ModelStruct.h#L137
Title: Re: Project Mario
Post by: sorlok_reaves on June 14, 2014, 07:26:51 pm
Good work Sorlok, DaSpirit wrote that INI extension but never finished. Second, the issues you are seeing with geometry are related to the model struct for GL1. Josh fixed it for GL3, it has to do with how we handle color, but he didn't add the fixes to GL1.

https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL1/GLModelStruct.h#L133
https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3ModelStruct.h#L137

Thanks for the insight; I'll dig into this a little more, since it would be kind of fun to have Project Mario working properly on Linux too.
Title: Re: Project Mario
Post by: Goombert on June 14, 2014, 08:10:09 pm
Yeah the reason is because the model classes use a hack that packs color into a single float, that was Josh's fix for Linux but he only applied it to GL3.

It's probably easier to review his commit and just make the same changes.
https://github.com/enigma-dev/enigma-dev/commit/b539ff0bee4b085532d8d0782d2518f83022ba3a

If you want, test it and see if it works, if it does send us a pull request.
Title: Re: Project Mario
Post by: sorlok_reaves on June 15, 2014, 08:18:37 pm
Yep, that did it. Along with the fixes in my branch (and the filename fixes in the zip I linked earlier), you can now enjoy Project Mario on Linux. The only minor issue is that GL3 doesn't seem to do any shadows correctly:

GL1:
(http://i.imgur.com/N7IYH2q.png)

GL3:
(http://i.imgur.com/6HpaTYp.png)

I've added these to my "Project Mario" pull request, which is now ready for review (again).
Title: Re: Project Mario
Post by: TheExDeus on June 16, 2014, 01:16:34 pm
Yeah, I am fixing GL3 right now. I fixed lights in this branch (https://github.com/enigma-dev/enigma-dev/commits/GL3-cleanup), but AMD keeps crashing on it. So I need to fix that.
Title: Re: Project Mario
Post by: time-killer-games on June 16, 2014, 03:52:49 pm
sorlok should also be in the contributor member category, ah well, no big deal I suppose.
Title: Re: Project Mario
Post by: Goombert on June 16, 2014, 05:58:23 pm
Thank you sorlok! Good work everyone. And Harri get to work on fixing those lights!

Edit: I have updated the latest ISO compliant version fixing all file paths for UNIX switching \\ for /
If I have missed any, please tell me.
Title: Re: Project Mario
Post by: francot514 on December 18, 2014, 03:38:53 pm
Really awsome your project, the graphics are really good, how can i compile it for linux???
Title: Re: Project Mario
Post by: Goombert on January 01, 2019, 02:19:06 am
Minor update to this topic because I have run across the fact that my old Dropbox links have gone dead. I stopped using Dropbox about a year ago but have backed up all of my files from there. I spoke with Josh and asked him about putting Project Mario up on the EDC and he actually went so far as to fix EDC game uploading. I'm now hosting the project's source there.
https://enigma-dev.org/edc/games.php?game=76

I believe this is carried on from the ISO compliant version because I notice I use all forward slashes for filepaths instead of backslashes. Which is fine either way, GM8.1 should handle forward slashes just fine. To get this version to build on the latest master you just need to use the OpenAL audio system because the DirectSound audio system seems to have some issues with some of the WAV audio files.

Over the years since I posted this topic, ENIGMA has changed significantly. The only main issue I have found with running the game in the good old OpenGL1 is that Mario's head does not appear on the start screen. This is likely due to a change in the clipping planes of the projection function when I switched ENIGMA to GLM. Direct3D9 has also seemed to have developed some surface issues at some point. Regardless, I am generally happy that the game continues to work so well despite some of our massive overhauling of the models and everything (thanks continuous integration!).