Earok's Monkey Demos
Submitted by Earok on Sun, 08/21/2011 - 13:04A collection of four demos written in the Monkey language, including Monkey source code, pretranslated HTML5 versions (all platforms) and precompiled C++ versions (Windows only).
Includes:
- Draw textured polygons demo.
- Super Mario Kart style Mode 7 demo.
- Six degrees of freedom demo.
- 3D Heightmapped terrain demo.
- Advanced Raycaster demo.
- Enhanced Joystick support. (HTML5 on Chrome, XNA, GLFW on Windows Only)
Comments
You Rock Dude awesome demos.
Thanks mate, much appreciated, and welcome to the site!
That mode 7 demo is nice :)! It would be awesome to remake F-Zero using monkey :)!!
Cheers Neuro, I'd love to see an F-Zero remake in Monkey, too - though my preference would be for F-Zero X ;)
Actually, now i'm wondering if it were to be possible to have animations on those image maps :)?
Certainly, and there's a couple of different ways you could do it.
Say, hypothetically you were doing a game set on an island, and the island was surrounded by animated waves. Since the map is just an image, you could have multiple different maps with the same island but with the waves in a different position, and change frames every so often.
Also, you could draw the water and the waves as the 'bottom layer', and the draw the land over top with transparencies.
So i guess you would be replacing the maps with different frames of waves images then? Also, how would we go about adding collision detection to the map itself? Or have another sort of "collision map" layer?
Yes, replacing the maps with different frames would work.
As far as collision detection goes, that's a bit trickier. I think, in Monkey the best you could do is manually define the collision boundaries on the map in code or text files.
The ideal scenerio would be to make a 'collision map' image which isn't actually drawn onscreen but is used by the game to determine where the collision boundaries are, but currently I don't think you can 'read' the RGB values of the pixels in Monkey.
gr8t demos m8
have you ever played alien legacy? the terrain demo looks a lot like it
the six degrees of freedom is great but the rotation gets a bit squirrelly if I rotate in 2 axes at the same time.
Does it use quats to rotate? That would fix all those issues
Thanks Slenkar,
Yes, the six degrees demo does indeed use Quaternions, infact most of the Quaternion code is based on the Blitz3D source. The reason why the backdrop gets a bit messed up when rotating is because I'm "faking" the 3D backdrops, since I can't render a proper textured skybox. I'm basically just drawing images directly to the screen and rotating them by the roll of the camera, which flips when you pitch past the north and south poles.
I haven't seen Alien Legacy, though it looks like the flight scenes might be rendered with a similar concept. The demo was inspired by the Novalogic Comanche games of the early 90s.
Hi, I appreciate you releasing the demos for others to learn from :)
I have a bit of an issue with the mode 7 demo. I'm using Monkey v66. I realize these demos are a few years old so I'm not sure if something's changed in Monkey since then or if there's something in the code I'm missing.
If I try to compile, I get an error on the line:
SetTile ImgTrack
saying identifier 'SetTile' is not found.
I can comment that line out, and the demo runs, but the image gets screwed up near the edges I assume. I've tried searching around but I can't find what SetTile should refer to. Any ideas?
Ah crap, sorry thedip. I was doing some experimental stuff on the tech demo (mainly, being able to tile the image so that the kart track repeats endlessly) but must have forgotten to take it out before the last update.
I'll get the demo working and republish the source tonight.
Just curious, are you looking to make a mode 7 esque game with Monkey?
Hi, thanks for the quick reply. No worries, I'm just glad the code is still available.
I actually am working on a mode 7 esque game, and coincidentally wanting to tile the map endlessly, too.
Ah hah. Well, I've got the original version of the source going, plus made some improvements (it now supports different resolutions, including widescreen, plus some fixes to the logic were done so it doesn't have the "fisheye" effect near the bottom left and right edges).
You should just be able to drop this file into the mode7 folder, I'll do a full republish of the monkey demos later.
https://www.dropbox.com/s/3epo8hhcbb0gtt7/mode7.monkey
I haven't got the infinite map tiling working again yet, though to be honest the pseudo 3D I did in this demo is hackey (basically, redrawing a 1024x1024 image for each of the bottom horizontal lines) and may not work well with infinite tiling. The per-pixel rendering seen in the raycaster demo might be a better option, or better yet maybe a rudimentary WebGL engine would suit the needs of your project.
Thanks for the code!
If I can't get it working to an acceptable level, I might try a hybrid approach.
Originally I was going to go with a rails system like I did for my racing game (based on the info from the wonderful page at http://www.extentofthejam.com/pseudo/ I created http://elusivegames.com/games/rocketracers/rr.htm ), but decided to give the player more freedom in direction this time.
Woah, that's awesome man. Looks and runs great. I've been wanting to do something like that for ages (actually I kind of want to make a game like Special Criminal Investigation, if I ever get around to it).
Are you releasing the source code to it, or going to post it on MonkeyCoder?
Thanks!
I'm always afraid to post things that I feel "aren't done" yet, but I probably should sometime soon. I might release the source code or an engine variant of it for people to use, when I can find the time. So many projects I want to get done!