Shoutbox (Disabled)

A few questions about the code / engine

Discussion in 'General Discussion' started by MirceaKitsune, Jan 14, 2017.

  1. MirceaKitsune

    MirceaKitsune Active Member

    Messages:
    137
    Likes Received:
    34
    First of all, I wanted to start by congratulating this game for the beauty and immersion it achieves, especially for something using 2D graphics in a 1st person perspective. I've only had time to try it out briefly for tonight, but am already in love with how this was all made: The art style is very colorful and pretty, the characters feel like they're actually right there in front of you, whereas the player having the ability to roam around and interact with different people in different places tops it all. The idea isn't new of course, with High Tail Hall being a famous series in this style... however nothing else took it as far, going for both this much content and such quality. Thank you to those who are creating this... even if it's technically a furry NSFW game, I believe this will go far :)

    In any case, onto my question: Being a game developer myself, one of my first curiosities is about how this game was coded, and what its true intended functionality and capabilities are... something I couldn't find a lot of information about. For starters, I'm a Linux user... so I was at first confused as to why the Linux / Mac versions seem to use an exe for the launcher, and naturally thought I have to run it in Wine. Of course I quickly recognized that's Mono, which I'm somewhat familiar with from OpenSim (the FOSS virtual world server using the Second Life viewer). It did surprise me a bit, given I'd have mostly expected the project to use something like Unity, or being 2D it could have went with HTML5 / JavaScript altogether. So as a curiosity, what was the reason for using Mono over native C++ or something else?

    Other than that, I was curious whether this is a general use engine, or whether the Amorous team coded it all from scratch. One reason being that, with Linux compatibility often being a problem in high-end games, it could help paint a better picture of any compatibility issues that may arise; The Cathouse Tale for instance has several issues when running on Linux, mostly because it uses Unity which apparently has very poor support for its graphics drivers. For now Amorous seems to run perfectly well, although I did need to modify an environment variable for it to launch properly.

    The other reason was that, I'm curious to what extent the game is built to be modular: Is it all coded as a single entity, or is it an engine that allows mod makers to create their own world? By own characters I of course mean other NPC's, stories and areas; I've already seen the player is himself / herself customizable, but I'm not sure if that customization can be used to create other people in the world or make your own world altogether. That's most of what I had in my mind for now.
     
  2. Seer

    Seer New Member

    Messages:
    1
    Likes Received:
    0
    They probably used mono because it much is easier to program a game that does not need high performance in C# than it is in C++ :p

    Also I'm sure you're aware games made in unity use C# (and of course Mono to be cross platform) extensively. and tbh im not sure why they didn't use unity (it looks like they didn't) because unity would make developing a game like this, especially with all the menus, really ezpz

    I'm not a dev on this game but I can also tell you that "high end" games not supporting Linux is usually because they use DirectX, which belongs to Microsoft.
     
    Last edited: Jan 23, 2017
  3. MirceaKitsune

    MirceaKitsune Active Member

    Messages:
    137
    Likes Received:
    34
    Those are good points, thanks. Mono always felt a bit like still running things on an emulator, though that's in part because the file is an exe so it naturally feels similar to running Windows software over Wine. I do find it surprising that some would find it easier, considering C# seemed a dozen times more complex than C++ when I last looked at it :p

    Also I didn't work with Unity personally, and wasn't aware it's C# and Mono based too. Generally I enjoy sticking to open-source engines and tools, though I can make exceptions such as here.
     
  4. servicenginxreload

    servicenginxreload Member

    Messages:
    47
    Likes Received:
    9
    Pretty sure it's written in XNA Studio framework, some of the asset files are XNB files which I recognize from other games using XNA, and it is C# as is XNA projects.
     
  5. Lennian

    Lennian Dark Lord of Team Amorous Team Amorous

    Messages:
    2,206
    Likes Received:
    928
    It's FNA, which is based on the XNA framework as an API only (much like MonoGame, but then in the extreme), while internally using SDL/OpenGL/OpenAL and other cool cross-platform libraries.

    We used Unity prior to v0.4 but as the game grew bigger and bigger, our demands for the game changed and thus we shifted to a custom build engine (from scratch, yes). One of the reasons being the need to create and test quests (or dates) in the game, without having to hand out the source or require our writers to install Unity. We were also sick of Unity creating massive files out of full-HD textures, which are actually easily compressible, without needing all kinds of hacks to work around this (all deteriorating the workflow inside Unity). Combine this with constant hangs and freezes of Unity and you have a recipe for disaster.

    v0.3 was 2GB-ish in extracted form and compressed to 700MB-ish as a download. That same v0.3 in our own engine with proper optimizations only used 300MB in extracted form, while compressing it further for the download barely had any effect (talking a few MBs shaved off).

    In combination with something like MonoKickstart (coming up for Mac/Linux builds, removing the need of having to install Mono at all), the game is in no way different than what Unity is technically doing.

    We could back-port the game to C++ in the way we set it up, but there is not much to gain of it. C# is a powerful language and especially now that Xamarin is completely free, nothing stops you from eventually turning your creations into an iOS or Android App (I'm not saying this is going to happen for Amorous, mind you).

    Currently the game is in a semi-moddable state, it could very well turn into an all-purpose framework for these kind of game with a little bit of work, but that is in no way the intention for now.
     
  6. servicenginxreload

    servicenginxreload Member

    Messages:
    47
    Likes Received:
    9
    I was pretty close! :p
     
  7. MirceaKitsune

    MirceaKitsune Active Member

    Messages:
    137
    Likes Received:
    34
    Thanks for the info, that answers some of the things I was wondering about! It's always fun to know what an engine is made in and why. I'm more accustomed to native C++ personally, so it would feel more at home that way... like you said of course, it depends on whether there's a gain. And glad it's not XNA... that seems to be a Microsoft proprietary tool.
     

Share This Page