Hypothetical questions about implementing a new engine

All the inane chatter goes in here. If you're curious about whether we will support a game, post HERE not in General Discussion :)

Moderator: ScummVM Team

Post Reply
ILikeThoseOldGames
Posts: 23
Joined: Mon Aug 30, 2010 6:00 pm
Location: Germany

Hypothetical questions about implementing a new engine

Post by ILikeThoseOldGames » Sun Apr 06, 2014 5:18 pm

Hello,

I would like to ask the ScummVM developer team hypthetical questions and their opinions about implementing a new engine for ScummVM.

There is some game series called Antrim Escape by Game Hive Corp. for iOS systems (https://itunes.apple.com/us/artist/game ... d443272129). The genre of this series is point & click adventure / "escape the room".

The design of the game in principle from my point of view is rather simple:
It consists of loading PNG & JPG images and playing Apple Core Audio files. For every PNG image there are defined areas which trigger loading of new images, playing sounds or setting variables. The game don't have any animations.

If find it interesting to try to implement a kind of engine for this games.

My questions therefore are:
1) Would this games also be within the scope of ScummVM concerning the genre "escape the room"?
2) The whole logic of the games is in the game executable. So if someone would try to implement a game engine the biggest task would be to script the whole game logic. For all I know (please correct if I am wrong) no ScummVM engine provides the game logic for a game in such a hard coded way. They are "just" interpreting the game files. Could such an engine still be added to ScummVM?
3) I would start to write some engine in C# because I don't have any experience with C++ and ScummVM source code. As mentioned before the game design relies in principle in showing PNG and JPG images and playing Apple Core Audio files accordingly to some game logic which has to be implemented separately.
Concerning code conversion and adaption to ScummVM code at the end:
Would it be very hard to convert simple loading of PNG and JPG images and playing Apple Core Audio files by ScummVM? As far as I read somewhere in the forums ScummVM is capable of playing Apple Core Audio files. A problem could be the PNG files. Apple is using some kind of own format for iOS devices. At the moment I converted all iOS PNG files to standard PNG files with some freeware tools in order to display them. ScummVM would also have to understand those Apple iOS png files for displaying them correctly. Because I don't know how exactly ScummVM engines are loading/displaying images I don't know how hard would it be to implement this in ScummVM.

Best regards

User avatar
md5
ScummVM Developer
Posts: 2260
Joined: Thu Nov 03, 2005 9:31 pm
Location: Athens, Greece

Post by md5 » Mon Apr 07, 2014 12:55 am

Hello

There are all sorts of games like the ones you're asking about nowadays. They are point'n'click adventure games, though there isn't any character interaction or dialogues.

To answer your questions:
1) Yes, most probably
2) If the logic is hardcoded, this might be hard to implement. Your assumption is wrong, there are several engines in ScummVM where the logic is hardcoded in executables and has been rewritten, and it's quite a hard task. Examples include Dreamweb, The Neverhood, all TsAGE games (Blue Force, Ringworld 1 and 2), The Journeyman Project: Pegasus Prime, Drascula, The Last Express etc. To answer your question: if you can rewrite the whole logic for each scene, and your implementation stays faithful to the original, then yes
3) Writing your code in C# and then porting it to C++ is a bad idea. You won't be able to work with ScummVM's infrastructure and logic, and you might end up redesigning and rewriting from scratch large parts of your codebase. So, you should better start learning C++, check our wiki on how to create your own engine, and start learning ScummVM's common code.

We already support PNG and JPG images through libpng and libjpeg. Apple has made modifications to the existing PNG format and basically made an incompatible PNG variant called "CgBI". The resulting encoded files are bigger and not optimized. The only reason they've done this "compression", as they call it in xcode, is vendor lock-in. There is a modified version of libpng here which adds support for CgBI PNG images to libpng.

AFAIK, we do not support Core Audio sound files, so this will have to be implemented. The Core Audio specs are here.


So, to sum up: if you are interested in working on a new game engine, it would be best if you started working on our codebase, instead of writing your own approach in C# and rewriting it from scratch. The hardest bits would be to rewrite the game logic, following the original, and to write a decoder for Core Audio.

ILikeThoseOldGames
Posts: 23
Joined: Mon Aug 30, 2010 6:00 pm
Location: Germany

Post by ILikeThoseOldGames » Mon Apr 07, 2014 4:18 pm

Hello md5,

thanks a lot for those clarifying answers.

Concerning the Core Audio format I also just researched the forums and see that I was misremembering some post. Sorry.

Nevertheless: I try to follow the wiki for creating an own engine.

Best regards

User avatar
dreammaster
ScummVM Developer
Posts: 392
Joined: Fri Nov 04, 2005 2:16 am
Location: San Jose, California, USA

Post by dreammaster » Mon Apr 07, 2014 7:22 pm

ILikeThoseOldGames wrote:Nevertheless: I try to follow the wiki for creating an own engine.
If you have any problems or questions about engine writing, you can always hop onto the IRC channel and ask them. There are usually at least several people around familiar with engine development that can answer questions. We're generally a pretty friendly bunch. :)

Post Reply