This page is a wiki. Please login or create an account to begin editing.


9 posts / 0 new
Last post
Offline
Joined: 2014 Jul 10
Monkey Shines Java Port

I have been porting the old Macintosh title, Monkey Shines, to Java to run on newer systems without emulation (with the added benefit of being able to handle better sounds and graphics). If you are unfamiliar, here is the relevant link to the original game hosted on this site:

http://macintoshgarden.org/games/monkey-shines

Basically, I redesigned the entire game engine in Java from scratch. I would like to share what I have so far. The port is hosted on github:

https://github.com/ErikaRedmark/monkey-shines-java-port

The readme explains a bit why I chose to port this game. The wiki contains some basic setup instructions. Running the game does require executing the .jar via the command line (I intend to later have a native launcher that just delegates to the .jar to make things easier). I chose now to share the work because I just recently reached what I consider a viable milestone in the project; the first level from the original game, 'Spooked', is playable under this new engine, and the level editor is capable of creating custom worlds (although it is a bit rough at this stage). As a result, even someone unfamiliar with the game can play through this version and get a feel for it.
Anyway, the main point is I wanted to open up to this community the work so far. I heavily enjoyed and still enjoy this game for its simplicity and challenge and whilst I am not holding my breath for it to have a community like it did when Fantasoft first published it I hope others can find enjoyment out of it.

Any questions, comments please let me know. I'm also open to anyone who wishes to contribute in any way, as the project is open source and free to everyone.

- Erika Redmark

Comments

Offline
Joined: 2014 Jul 21

It's great that Erika has decided to do this, and the gameplay is so close to the original that I can hardly tell the difference.

I wrote the original Monkey Shines game, and it is great to see it working on a modern PC.

Offline
Joined: 2009 Nov 14

Really? That's awesome! I've never too into the "recreation" scene (a Flash port of Glider PRO isn't very good, to put it kindly). Perhaps you could give her some advice/code to make it a true port and not a recreation?

Offline
Joined: 2014 Jul 10

What is the difference between a port and a recreation? I am aiming for as complete of an original experience as possible, although it is in an entirely different language and many of the algorithms are different as well.

Offline
Joined: 2009 Nov 14

A recreation is where you don't have access to the source code (done through reverse-engineering or just trying to "recreate" it with the resources you have"), a port is where you do have access to the source code. Generally, source code-based ports are higher quality but sometimes they're simply not available.

A notable example is Bubble Bobble, an arcade game whose source code was actually lost in the 1990s. The "ports" of Bubble Bobble are recreations in which the arcade game was studied to get the mechanics down. Colloquially, you call it a "port" whether it used the source or not (like the Atari 2600 Pac-Man and why it looks and plays nothing like the original) while the "recreation" label tends to be used if it wasn't licensed by the original company (which is why many recreations have different names and graphics to avoid any copyright problems).

Seeing as how you do not have the source code (yet, unless "Bonzo's Daddy" can help you out) and since the original company is dead and gone, it would be technically a "recreation" either way.

JonathanNemo's picture
Offline
Joined: 2014 Mar 1

Nicely done! I just figured out how to load this in the Debug world. Using Java 7 in a WinXP virtual machine.

Java 6 on Mac OS X doesn't get far with running this. That might be expected. I get a "java.lang.NoClassDefFoundError" exception printed out when I run the prebuilt jar from the console.

I know of an effort to make a version of Missions of the Reliant for modern Macs. I think that's on hold... and I'm more than sympathetic to that, having had a personal game project that's been on hold for quite some time now. Tongue

You might want to consider reaching out to that project's creator, Gwynne, she's in the middle of writing a book on the darker corners of Mac OS X.

Offline
Joined: 2014 Jul 10

Thank you for trying it out; I updated the wiki to make things clearer. You can also load up the level Spooked if you have not already. And yes, the game requires Java 7 to run. Are you able to install Java 7 on your Mac side?

I never played Missions of the Reliant before (sounds like Escape Velocity). However, Monkey Shines is a one-off for me in terms of trying to port an older game to newer systems and as a learning experience really above all else, so as of now I'm pretty much 100% focused on making Monkey Shines as best it can be (in terms of personal projects outside of work and family).

mathieudel's picture
Offline
Joined: 2009 Dec 15

Installing Java 7 on MacOs should be very easy... on newer OsX versions.

I don't think it can be done under 10.5, and from 10.6, you need to download old versions of Java since newer ones require MacOS 10.7+... The one I currently have installed on my SnowLeopard Mac is 1.7.0-u4-b13 from open JDK.

Edit: I tried the game and it's working with this version

JonathanNemo's picture
Offline
Joined: 2014 Mar 1

Understood, and don't worry. I'm not trying to pile more (uncompensated) work on your shoulders. I am quite aware of how that feels.

Java 7 isn't the nicest citizen on OS X. The GUI bits don't scale gracefully to the higher resolution "retina" Macs, so every UI element, font, and image looks blurry on the new Macbook pros. There's also an annoying bug that causes the Java runtime to crash at launch, when it's running in a virtual machine running an instance of Mac OS X. That may have been fixed in OpenJDK, but it never was fixed in Oracle's version.

(I've also got a few personal reasons not to trust Java later than 7 outside of a VM, but those are political issues. Not technical ones. Smile )

That said, I'm glad mathieudel was able to confirm.