How capable is this engine?

I only recently heard about Castle Game Engine and haven’t been able to find out much about it. The screenshots and videos all seem fairly basic.

Could someone explain what its current limitations are?

For example, I could not find any mention of how large a terrain it can handle or whether dynamic water and lighting are available.

I would like to (eventually) be able to produce a first person RPG. Could CGE handle this without a lot of extra code needing to be added?

If so, can you give an example of an existing RPG that could be replicated with this engine? i.e Might and Magic VI or Skyrim (there’s quite a difference between those two).

Hi, @Wysardry and welcome!

Depends on what “a lot” means. Castle Game Engine is not a 3D version of RPG Maker :slight_smile: It is a game engine, not a constructor for a specific game type. That means, yes, RPG games tend to have a lot of different mechanics and a lot of mechanics require a lot of custom code. So, unless your game is very basic (e.g. click enemies to earn XP), then expect the need to write a lot of complex code - AI, crafting, interacting with different object, complex scenarios, conversation subsystem, quests management, loot, skill trees, etc.

If so, can you give an example of an existing RPG that could be replicated with this engine? i.e Might and Magic VI or Skyrim

“Could be replicated” is quite a broad term. In other words “definitely it could be replicated”. The question is “how expensive (in terms of man-hours) that would be” and “if that expense is reasonable in current videogame market state”. And that would be very expensive, first of all in terms of assets (such as static and animated 3D models, audio, storywriting, shaders, etc.). Don’t forget that developing and balancing a consistent RPG system is a huge task on its own, even if you are using something as popular as ADnD.

But, well, that’s possible. Right now I’m working also with Unity Engine, and if I’d been up to making a Skyrim 2 - I’d most likely have chosen Castle Game Engine - not for simplicity (I expect this task being extremely complex, in any game engine, unless it’s a Skyrim constructor called Creation Kit), but for degree of freedom it offers, which is critical for such a non-trivial game. But knowing the amount of assets required I wouldn’t even start unless I have a team of at least 5 graphic designers and modelers :slight_smile: not talking of other specialists, like several game designers (this game is too complicated to be handled by one), storywriters (I’m not sure about Skyrim, but Morrowind has something like 80+ thousands lines of dialogues), etc. Also note that without proper marketing backup this project will go to waste, you’ll get like 10-20 free downloads / year on itch.io and a only single comment that “This game is trash, it takes too long to load”.

That said some time ago I was working on a Wizardry 9 game (coincidence with your nickname is purely accidental!). However, lack of both gamedesigner and programmer experience at that point made me fail as “one man tam”. For now this project is suspended indefinitely - first of all, due to enormous amount of assets required, but also due to more casual and boring life circumstances.

But, yes, given you have all the assets available and in game-ready state I’d say an experienced programmer can make something like Might and Magic X Legacy in a reasonable amount of time (2 man-years of programmer’s work maybe? Making more accurate estimates would require a lot of time on their own).

1 Like

Hi!

The list of features is on Features | Castle Game Engine . See also the list of new things in the upcoming 7.0 release New Features in Castle Game Engine 7.0 · castle-engine/castle-engine Wiki · GitHub and the news about the very-latest features on Castle Game Engine – Open-Source 3D and 2D Game Engine .

For example, I could not find any mention of how large a terrain it can handle or whether dynamic water and lighting are available.

There are no hard limits specific to these things.

But there are practical limits, since large things → usually means that something is slower, also some things depend on texture size which is limited by GPUs (the engine takes care of it internally by using a smaller texture size, if necessary). So there are limits, in practice, but they depend on both engine, and what exactly you put in the game, and what GPUs you want to support (very old ones? or only new ones?).

Details:

As for specific RPG game types: they both are possible, and they are both large/huge tasks. As Eugene mentioned, you need to implement a lot of game-specific logic for these kinds of games, you also need a lot of assets, and some game design ideas (unless you go for 100% copy) etc. But it is possible. That is true about any game engine out there :slight_smile:

Naturally “Skyrim” is harder than “Might and Magic VI” (from 1998), the latter is easier technologically. Note that you would need to invent how to smartly present an infinite world to the player (this is not something that would be automatically provided by the engine; but then, other engines like Unity also don’t provide an “infinite terrain + infinite map” out of the box, you need to figure out how to do it, when to load the data such that the player doesn’t notice/doesn’t mind).

In general, for a first game (in any engine) I would not advise creating a large RPG game in a huge world. Better start with something small, with more limited scope (both development, and graphically) and have it finished.

2 Likes

Thanks for the long replies guys. I was actually expecting something more along the lines of “Even a Might and Magic VI clone would need a lot of extra engine code”.

@eugeneloza : It was the amount of extra engine code that I was referring to in my first post, rather than the content, logic and data that would be required to create a game for any engine.

If it helps, I’m trying to assess whether using CGE to create a first person RPG set in a large fantasy world would require a lot more work than doing the same thing in Unreal Engine.

UE4 supports large continuous maps out of the box, but I’m not a big fan of C++ or Blueprints (their visual scripting option). There has been talk of them adding a scripting language for UE5 (due in 2021), but nothing has been officially announced.

The two main advantages that UE4 has are that there are hundreds - if not thousands - of free assets on their marketplace and there are more than a few books, videos and courses available.

From what I’ve seen on the website, the two main advantages that CGE has are that it is written in Pascal (which is easier to read) and that it is available on more platforms. The second is partly a side effect of the first though.

@michalis : I had two main questions about the terrain which I couldn’t find answers for:-

Is there is any sort of paging or streaming feature in place that adjusts the coordinate system to avoid errors from using very large numbers? For example, Unreal Engine 4 will automatically reset the coordinates to zero when the player or camera crosses certain boundaries (large terrains are built from multiple smaller pieces).

Are there existing terrain generation tools (such as Terragen) that can export files suitable for use with CGE. Most of the other engines I’ve looked at use height maps, which doesn’t seem to be the case with CGE. I’m only vaguely aware of what X3D even is.

Initially I would be using a 5 year old laptop with an Nvidia GT 750M chip, so I would want to support a GPU at least that old. Ideally I would also like the game to run on a Raspberry Pi 4 with 4Gb RAM, as I was given one of those last Christmas and haven’t used it for much yet.

When I mentioned water, I meant in terms of fluid dynamics where it would flow downhill and around objects, allow for items that float or sink etc. I did see examples of flat water in the screenshots and videos.

I intend to start small, but would like the option to expand upon that with new content in sections over time. Maybe along the lines of how many MMORPGs such as WoW and LotRO are designed, with new map areas added after the initial “base game” is finished.

I wouldn’t want to have to switch engines because I hit an unforeseen size limit.

Happy to hear we help :slight_smile: We want to describe the engine lacks/strengths honestly, so that you don’t end up expecting from the engine something it doesn’t do.

UE4 supports large continuous maps out of the box, but I’m not a big fan of C++ or Blueprints (their visual scripting option).

Note that neither CGE has something like it. You would need to invent this yourself. This is what I referred to earlier by “”“you need to figure out how to do it, when to load the data such that the player doesn’t notice/doesn’t mind”“”. Note that we don’t support loading data to GPU in a thread either, right now (it is not even possible with OpenGL, it will come with Vulkan, which will happen – but not soon).

Is there is any sort of paging or streaming feature in place that adjusts the coordinate system to avoid errors from using very large numbers? For example, Unreal Engine 4 will automatically reset the coordinates to zero when the player or camera crosses certain boundaries (large terrains are built from multiple smaller pieces).

There is no such system. You would need to invent it yourself, also.

Are there existing terrain generation tools (such as Terragen) that can export files suitable for use with CGE. Most of the other engines I’ve looked at use height maps, which doesn’t seem to be the case with CGE. I’m only vaguely aware of what X3D even is.

We use height maps for terrains, e.g. in examples/terrain/ code. In CGE, just like in other engines, you can add any mesh on top of the terrain, and actually you can just use a free mesh instead of the height map. In the simplest case, you just design everything in Blender, and export to glTF.

So we don’t really have here anything special in CGE.

Per Roadmap | Manual | Castle Game Engine , I would like to add a dedicated terrain editor in CGE. Right now, there is none. So your best and simplest approach is just to create terrain in Blender, using a regular mesh.

Initially I would be using a 5 year old laptop with an Nvidia GT 750M chip, so I would want to support a GPU at least that old. Ideally I would also like the game to run on a Raspberry Pi 4 with 4Gb RAM, as I was given one of those last Christmas and haven’t used it for much yet.

Raspberry Pi 4 GPU is not very strong. So if you will have this requirement, you will need to optimize a lot.

When I mentioned water, I meant in terms of fluid dynamics where it would flow downhill and around objects, allow for items that float or sink etc. I did see examples of flat water in the screenshots and videos.

We don’t simulate water physics in CGE (it’s something very computationally expensive, definitely not something we could do soon; and when we do, I’m pretty sure it would be very slow on Raspberry Pi anyway). Water in our demos has simple pre-designed surface, and we simply simulate waves on it. But that is not a technique to get fluid dynamics you mention.

So, not many positive answers here, I’m afraid :slight_smile:

  • We do not have any special features for terrains, in particular we definitely are not better than Unreal Engine in this department, we’re way behind UE actually.

  • You can use terrains, and you can simulate infinite maps by loading some parts – but that will require code on your side to manage it.

  • We do not support fluid dynamics.

  • The need to run on Raspberry Pi adds a significant difficulty here. Raspberry Pi is cool, I use it and like it a lot, and the CGE rendering runs there correctly. But it is a lot slower than the usual “gaming” desktop computer (which is at least “usual PC with GPU being Nvidia/Radeon”). If you want to make a game that runs smoothly on Raspberry Pi, then graphical effects need to be cut down, and the amount of data present in the world at one time (that is feed to GPU) must be small.

My honest suggestion would be to not start by trying to make the RPG game you envisioned in CGE. Instead, make a different game, with a smaller scope from the very beginning. And keep testing how it works on Raspberry Pi during development, as it will force you to optimize much more heavily than a typical desktop, you may need to bake some things that would not be necessary on desktops.

After that, you will have a ready game, and a knowledge about CGE and performance of Raspberry Pi :slight_smile:

In Skyrim flowing water, including waterfalls, is actually achieved by particles + waves shader.

And I really doubt fluid dynamics is something possible other than for a non-realtime rendering. When I was experimenting with modeling fire+smoke in Blender it took like 1 minute to process one frame.

Note that water shaders can be extremely cool e.g. like this Shader - Shadertoy BETA but even this is not a fluid dynamics, but an animated complex colorized water surface. However even this simplified case is not suitable for a game - my Radeon RX560 which is twice faster on benchmark than Nvidia GT 750M drops below 50 FPS in 1280 x 526.

@michalis : Thank you for your honesty. I have been to more than one forum for engines that have “unlimited terrain” listed as one of their features, only to find out that by “unlimited” they actually mean “4km by 4km” because “nobody would make a game world bigger than that”.

The main reason for using height maps instead of a mesh for terrains is that most of the terrain generator software I’ve seen exports in that format for larger maps, due to tiling being needed.

I’m not really looking to create infinite terrain, just very large terrain (eventually). I’m also not intending to aim for photorealism, but more of a low-poly, stylised retro look. If Bethesda could get a game as large as Daggerfall to run on a 486 with 8Mb RAM and a 256 colour VGA video card, I’m sure something of a similar size could run comfortably on a Raspberry Pi 4 if the polygon count was kept low enough.

The idea of developing on the Raspberry Pi is an intriguing one. I would likely need to create the terrain on my laptop though, as I don’t know of any terrain generator software that would run on a Pi.

I had intended to start with a smaller game and gradually build upon it in a modular fashion. Maybe with a 4 square kilometre map, a single town and a dungeon to start with, then add more content, quests etc. over time.

@eugeneloza : This Youtube video may surprise you then. It shows an Unreal Engine project that (as far as I can tell) was written with Blueprints visual scripting without modifying the C++ source.

That is way more ambitious than what I was hoping to achieve, but it does show what can be done these days.

This Youtube video may surprise you then.

Indeed it’s a really fancy thing. But it doesn’t seem like a fluid simulation. It uses (quite poor looking) particles for water flow + water shader(s) far inferior to the shader I’ve posted above (but in turn much more optimal so that they can be used in a game). I’m not sure of the details, but it looks like they have quite a lot of additional very useful logic underneath, like filling enclosed spaces as the water inflows - unless this is not a scripted animation like in Alien Odyssey (1995) which had a similar scene.

In my understanding the fluid simulation looks like this: https://www.youtube.com/watch?v=ureGelZPi3o - maybe we were just using the same term to describe different things :slight_smile:

As far as I’m aware, the video was captured from a realtime demonstration of actual gameplay. The project is available for UE4 users to download and use.

In my original question, I wasn’t asking about 100% accurate fluid simulation, but rather fluids dynamically reacting to objects and vice versa. i.e. objects floating or sinking depending on weight and density, fluids flowing around objects, objects moving with the flow of fluids and being affected by other moving objects etc.

It wouldn’t really be about the visuals but rather how it could affect gameplay. For example, a character might sink in water if they were overloaded with items but could get around that by clinging to a floating log and pushing it to their destination.

It seems that Unreal Engine has just had a water update in the latest version (4.26).

There’s a Youtube video here that shows most of the features I was hoping to (eventually) include in a game. It’s a little over 35 minutes long though, as it also (briefly) explains how to use each feature.

1 Like

First they have WYSIWYG editor to create terrain, second they seamlessly blend several meshes with animated shaders, and third they have physics integrated with current shaders state. That’s far more cool than “water with a simple shader filling a simple shape with cheap particles for waterflows” I saw in the previous video.

No, that’s not available, and I don’t think it can be implemented within a reasonable amount of time. I don’t say that’s impossible, but if I were to make something like this (and the game would not be centered only around this single feature) I’d go with something much simpler.

The physics and shader integration is a new feature for 4.26 I believe. They replaced PhysX with their own custom physics system for this version.

I’m not sure the shader system would be that useful in an actual game, if the terrain is mirrored to the water surface instead of having real transparency, as I would imagine that would make anything in the water invisible from above.

This would not be very useful if you have fish swimming around or objects on the river, lake or sea bed.

I’m more interested in being able to create lakes, rivers, streams and seas that can flow into each other with buoyancy and flow physics for any objects in and on them.

Those systems were built up over time, with improvements being made gradually, especially for the editor integration.

The water system in the video is currently an experimental plugin. A plugin would likely be the way to go for something like this, as not every game needs realistic water.

From what I’ve heard, Unreal Engine water has been behind other popular engines for a while. I saw a Cryengine video several years back that had realistic river flow and buoyancy.

I’m far from being an expert, but I’m guessing that the first step towards adding something like this to CGE would be improving or replacing the physics system.