Frequently Asked Questions
FAQ:
- A 2D Engine? Isn't that a contradiction in terms?
- Not at all. While it is quite easy to develop a program that draws a 2D sprite to the screen, it is considerably more complex to create a fully featured, generalised form of this. Even more so, MASI is more than just a sprite renderer, containing a memory manager, a file system, codecs, texture and font engines, text rendering, particle systems, and a sound wrapper.
- You use OpenGL, why are you only supporting Windows?
- Acheron Design develops for the Windows platform. Our choice of API is historical rather than driven by a desire to use it. MASI could be ported quite easily to a *NIX based operating system, but we do not have the time or resources to do so.
- I've never programmed before, where do I start?
- MASI was designed to allow someone with extremely rudimentary knowledge of C++ to program using it. It is quite possible to go through the tutorials in blissful ignorance of the C++ language, and end up being able to make a MASI game. We suggest that you start small, and try to learn C++ on the way. There are numerous online tutorials for C++, as well as tutorials to use MASI. Just don't expect to create a 200-hour long RPG on your first time around.
- Wait, so MASI is free?
- It certainly is, provided that you don't try to sell anything that uses it. If you do want to do this, look at the licensing page.
- Where are some examples of MASI games?
- LMX is the only released MASI game, but Renegade RX is in development as of writing, and is also powered by MASI. With luck, we shall see more use of the engine as popularity grows. Since we don't have much of a track record, we have put up a page of screenshots for your perusal.
- Why do I have to use Visual Studio with MASI?
- MASI exports C++ symbols from the DLL. These symbol names are highly decorated, and can only be imported by a compiler which reads the Visual C++ Import Library file format. Additionally, we use STL strings in many of the arguments, which means that the DLL and the software must share runtime libraries. OH MY GOD NEW INFORMATION SEE BELOW!!!
- What the heck are these "C-linkage" things in the docs?
- Since we felt dangerous, we decided to write a C-wrapper DLL for MASI, allowing any compiler that works on Windows to access MASI. Hell, it even allows other languages such as VB, C#, J#, possibly even Java to access MASI. Since we like C#, we're writing a C# wrapper as well, the rest of the languages are still unsupported officially. It should be noted that this is not a very nice wrapper for MASI (well, the C one isn't) but it does allow a lot of added functionality. All the class-based functions have been replaced with massive function names and pass-by-argument calls. A very (very) basic tutorial will be provided so you can get to grips with the system. But then it's all up to you. Additionally, the higher level functions, like custom classes, are not available in the exported form of the engine.
- Where is the MASI source code?
- At Acheron. We have not released the MASI source code, and have no great desire to do so at present. Pleasantly worded emails requesting additional information about an aspect of the engine or design are welcomed by the MASI developers, however.
- Why doesn't MASI support [insert image/sound format here]?
- We have made an effort to support a large number of commonly used formats. If you desperately want to get a format incorporated into the engine itself, provide us with a decoder unshackled by restrictive or viral licensing, and we will consider it.
- What about MP3?
- MP3 is a special case. Fraunhofer IIS, which owns the MP3 patents, requires that we pay them $0.75 per decoder. Needless to say, this is not something we approve of, and as such, we have removed MP3 support from the engine. If you wish to use MP3s in your software, beware of the gigantic fee you will have to pay Fraunhofer IIS, and use the custom sound codec functionality in MASI to add support. We suggest using LibMAD.
- Why don't you just use FMOD?
- FMOD, while it is an excellent sound library, requires us to pay an "engine licensing" fee to use it. Indeed, the lump-sum style fee in FMOD (and our inability to pay it) was one of the driving forces behind our choice to avoid one-off payments for MASI licensees. Early builds of MASI used FMOD, but it was eventually replaced by our own solution.
- What exactly is going on with MASI licensing?
- We have, as of yet, not needed to set up a full commercial license for MASI, primarily because, as of writing, nobody has tried to use it outside Acheron Design. Our instructions are simply to contact us if you wish to commercialise, and go from there.
- Why does everything need a unique string name?
- Because MASI was written to allow people without a lot of C++ knowledge to still use it. Generating a unique name can become slightly annoying if you never use the string referencing, but the added accessibility makes it worth it.
- What third party libraries does MASI use internally?
- MASI uses serveral (modified) third party libraries. LibPNG, LibUnGif and LibJPEG are used in the image decoder module, LibOgg, LibVorbis and the now public domain LibModplug (by Oliver Lapicque) are used in the sound decoder. Additionally, input and networking is provided by DirectX, sound output by OpenAL and the engine uses OpenGL for rendering. Finally, we use the ZLib library for several parts of the engine.
- MASI explodes/crashes my computer, what do I do?
- Section documentation in the engine contains common pitfalls, check there first. If you can't solve the problem by looking at the documentation, send us a full bug report, including the code that caused the problem as well as details about the system it was running on.
- I get 500 FPS in UT2004, but only 6 in MASI! What is going on?
- Most likely, MASI is defaulting to the software OpenGL renderer shipped with Windows XP, ensure you have up-to-date video card drivers. Alternatively, you may have encountered the hardware limit. MASI is a 2D engine, and as such, needs to do a lot of things that are frowned upon strongly by video card manufacturers. Because everything uses different textures, we cannot easily pool draw calls, and in practice, most objects are alpha blended - dependent framebuffer reads are extremely bad, speed-wise. We are contantly trying to optimise the engine, but keep hitting graphics hardware limits.
- Is there somewhere I can discuss MASI with other people?
- Please, make use of our forums! It's a great place to ask questions and discuss your games and the engine.
- Who or what is Acheron Design?
- We are an independent games studio, located in Melbourne, Australia.
-