Join our Open Meeting on Discord this Saturday (September 17th)

Posted on

SHIELD Helicarrier Meeting Room - glTF from Sketchfab, by mohitpatel4078, https://sketchfab.com/3d-models/shield-helicarrier-meeting-room-eff5e50ea5384118b2c33a9ba3de5727

It’s this weekend already!

Join Michalis Kamburelis and other Castle Game Engine developers, contributors and users at our 3rd meeting on Discord.

The meeting will happen at 15:00 (UTC timezone) on this Saturday, September 17th, 2022.

Simply join our Discord chat and go to #open_meeting channel.

You can just visit this link to land in the channel directly. Or use this link to see the event details (click on “…” to see options to add it to your calendar, mark it “I am interested” etc.).

Agenda:

  1. Presentation of new CGE features. I’m sure we’ll have lots to talk about after our 7.0-alpha.2 release and I have more news coming this week 🙂

  2. Our plans for the immediate future. I also hinted about them at the bottom of the 7.0-alpha.2 announcement — physics, memory optimizations.

  3. Your turn! Everyone is welcome to take the stage:

    • Show what you are working on. Show your project, component, game, anything even loosely related to CGE is OK.

    • Any questions? We will be happy to answer them live.

P.S. The image in this post is of course Castle Game Engine editor showing pretty model from Sketchfab: SHIELD Helicarrier Meeting Room, by mohitpatel4078.

Comments on the forum ➤

Castle Game Engine 7.0-alpha.2 release! Many new components (lights, primitives, fonts, sound…), new cameras, terrains, sprite sheet editor, Delphi

Posted on

Terrain, water, trees designed in Castle Game Engine editor
Sprite sheet platformer demo
TCastleSound component in editor
Lights design in editor
Fog
Invincible - Mark Grayson (3D model rendered using Castle Game Engine)
Camera from Sketchfab in glTF
Cars from Sketchfab
Terrain heights from a simple image
Terrain wireframe, water rect underneath
Effekseer particle effect in Castle Game Engine editor
GitHub Actions
GitLab CI
Castle Game Engine Inspector - Mousey glTF animation
Castle Game Engine editor on macOS
Castle Game Engine example - image_display

We are proud to announce the Castle Game Engine 7.0-alpha.2 release! After 18 months of intensive development since 7.0-alpha.1 we present a number of new features that upgrade the engine to a new level.

Go to our main page and follow the download links to get it now. You can also get the engine through itch.io.

Please support the development of the engine on Patreon. We count of your support to fund the development of the engine! Right now we hire developer Andrzej Kilijańśki (paid mostly from Michalis own pocket) who is responsible for many features in this release. Andrzej now works on new physics and joints components. We want to be able to hire more talented people, we want also to pay them from the funds on Patreon.

This is another stepping stone to a grand 7.0 stable release, planned (this time for real!) at the end of this year. Maybe there will be another alpha (7.0-alpha3) before that.

Notable new features in this release

  1. Sprite sheet editor integrated inside CGE editor, using our own sprite sheet format (based on Starling).

    See sprite sheets (manual). Creating and using sprite sheets is also covered in recent CGE video tutorial.

    A large demo is in examples/platformer. It’s a complete platformer game that you can play, it is also released on itch.io.

  2. More components you can place in a viewport:

    Simple geometric primitives: TCastleBox, TCastleSphere, TCastlePlane, TCastleCone, TCastleCylinder.

    Text, that can be in 3D: TCastleText.

    Image in a viewport: TCastleImageTransform.

    Reference the same transformation multiple times: TCastleTransformReference. e.g. to instantiate thousands of trees (see manual).

  3. Components to configure fonts, from code and editor:

    TCastleBitmapFont, TCastleFontFamily, TCastleFont.

  4. New sound components, they can also be used to design special sound in editor:

    TCastleSound and TCastleSoundSource .

  5. Design lights, in CGE editor or from code, using new light components:

    TCastlePointLight, TCastleDirectionalLight, TCastleSpotLight.

    I also show this in recent CGE video tutorial. Also Phong shading is now default, making lights prettier.

  6. Design backgrounds, with gradients and skybox:

    TCastleBackground component.

  7. Design fog:

    TCastleFog component.

  8. New camera and navigation handling:

  9. Components to visualize terrains (TCastleTerrain) and generate terrain data from smooth noise (TCastleTerrainNoise) or image (TCastleTerrainImage) or a combination of them (TCastleTerrainCombine). See the examples/terrain. See this post for an overview.

  10. While we don’t have a particle system available in CGE out-of-the-box, thanks to Trung Le (Kagamma) we now have a number of good options:

    1. GPU-based Particle System for Castle Game Engine
    2. Effekseer (Particle Effect Creation and Runtime) Integration

    See additional components for more components that you can use with CGE.

  11. Ready files with documentation to use engine with GitHub Actions, GitLab CI, Jenkins. Just drop a file into your repo, and enjoy automatic builds!

  12. Delphi support. Just configure in “Preferences” to use Delphi as compiler and/or Pascal code editor.

  13. Build Debian packages for your projects (thanks to Eugene Loza).

  14. Numerous smaller editor improvements:

    • Operating on files: double-clicking to open Pascal files (from file browser or output), easy creation of new states (with design and code), using any code editor (Lazarus, VS Code…).

    • Undo and other shortcuts in editor are now easier, like Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+Z all do what you expect.

    • Choosing platform and release format in editor. You can even run Windows game build on Linux through WINE.

    • Various improvements to making custom components that also appear nicely in editor.

  15. glTF improvements: step interpolation, cameras fix, normal scale handling, ability to pick subset of glTF.

  16. Inspect your game hierarchy and logs at runtime — just press F8. See video about using the inspector.

  17. Integration with Vampyre Imaging Library for most of our image formats. See examples/images_videos/image_display for a simple image display demo.

  18. A few upgrades to our KTX image handling. We support now mipmaps in KTX, and ASTC compression.

  19. Lots of Android building improvements, to make it as easy as possible..

  20. Big macOS improvements. We now have Cocoa backend in TCastleWindow, and latest version of our engine is automatically rebuild and available for macOS users. See macOS (manual) and news about macOS.

  21. A lot of documentation upgrades! The documentation is now up-to-date and nicely describes typical engine usage. A lot of new pages have been written, a of old pages have been rewritten or removed.

    Under the hood, most of the documentation is now using AsciiDoctor following my thoughts outlined here.

  22. I’m also proud to list some deprecations and removals here. We managed to make the engine API more powerful but at the same time smaller and simpler to understand in this release! In particular:

    • TCastleWindow.SceneManager is gone. The TCastleSceneManager is deprecated. The advised new approach is to place TCastleViewport instance on TCastleWindow, you can trivially do it using code or in editor.

    • MainScene is deprecated. There’s no need to designate any scene as “main” for some engine features.

    • UseHeadlight is deprecated. You can add regular lights as children of TCastleCamera.

    • AutoCamera is deprecated. Design camera in CGE editor. To animate the camera, make it a child of animated bone exposed by ExposeTransforms.

  23. This feature list is just a summary… All the engine news, from 7.0-alpha.1 announcement to today, span 130 news posts (!). Go ahead and browse them if you’re brave 🙂

Note: While this version is designated as “alpha”, the engine is ready to make production-quality, released games — in fact it already has been used for this.

For previous features, see already announced 7.0 features and 7.0-alpha.1 features.

Plans

For future plans, see our plans for 2022 and our roadmap. Immediate future plans are:

  1. Integrate physics with joints from Andrzej Kilijański, see PR and teaser movie.

  2. Optimize memory usage of X3D nodes. We’ve done the 1st stage: all nodes have auto-generated code to create all fields. So now we can revolutionize it.

Spread the word!

If you want to post about this release anywhere, of course go ahead — we depend on you to spread the word about the new release! You can let Michalis know (e.g. on Discord) where did you post it. Be sure to link, at least to the engine main page and to this news post.

If you’re looking for a shorter summary of new features (e.g. maybe because its more suitable to reuse somewhere) you can use the release summary from GitHub.

Have fun and create amazing games!

Comments on the forum (1) ➤

Changes to Patreon tiers and goals: Get your stickers, Discord roles and recognition in Credits!

Posted on

Thank you for contributing and donating to Castle Game Engine!
kiss-cut-stickers-4x4-default-62e6f6b19d394

The support we get through our Patreon page is a big thing for us. It is a donation system that really works and in the ideal future I would like to see engine development funded by this model. So we really appreciate your support on Patreon!

New Patreon tiers and rewards

  • Patreon Tier: Discord Role and Channel for Donors

    Discord Role and Channel for Donors (5 USD / month):

    You get a “Donor” role on our Discord chat. The role gives your nick a special color, and access to the #donors channel on Discord.

    Make sure to connect your Patreon account to Discord (more info in Patreon article about this).

  • Patreon Tier: Mention in Credits

    Mention in Credits and Stickers (10 USD / month):

    • Mention on the Credits page. Note: by default I will use your name from Patreon. if you want me to use anything else, or wish to remain anonymous, just write to me.

    • And stickers! After 3 months of being a donor on this tier, you get a collection of 4 stickers. Delivered anywhere in the world (just set your shipping address on Patreon).

  • Patreon Tier: Monthly Consultations / Q+A

    Monthly Consultations (50 USD / month):

    In addition to the benefits from previous tiers, you are invited to a monthly meeting scheduled by Michalis for all Patrons on this tier. Please drop by and let’s talk! I can e.g. answer questions about the engine and help you with your project.

New Patreon goals

  • 250 USD: We get tangible proof that we can fund engine development through Patreon!

    Right now we are hiring 1 developer (Andrzej KilijaÅ„ski) at 1/2 FTE, paid from Michalis own pocket. As we reach further goals, I hope that money from Patreon can cover this cost — and allow to hire more people.

    Reaching this goal will also deserve a little dance of joy with my cat!

  • 500 USD: We add a tier with T-shirts (more merch!) to our Patreon offering.

  • 1000 USD: We hire additional person to our team (developer or gfx arist) to work regularly on the engine.

Why do we need your support on Patreon

Short story, looking into the past: Almost 2 years ago I decided to hire from my own savings Andrzej KilijaÅ„ski to work part-time (regular 1/2 FTE) on the engine. And this was one of the smartest decisions I made. The amount of features we added to Castle Game Engine together with Andrzej in recent years is amazing, I’m proud that the engine is today on a completely different “level” than it was 2 years ago.

Looking into the future: We obviously want more. More dedicated people who can contribute regular time to the engine development. Programmers but artists too. And my ideal plan to make it happen is to get donations through Patreon to make it possible.

Business (companies) support

Though I called Patreon my ideal plan above, there are alternative plans and additional plans. First of all I would like to get companies to support the engine (possibly in exchange for on-going support or even a specific feature development, depending on the contribution level). I have plans to explore this (contact me if you have/know a company that would like to sponsor Castle Game Engine). In an ideal future, we get a diversity of supporters (both community and business) and with this — freedom to follow our priorities (to just make the best open-source game engine that features both a visual editor and a powerful code API).

Why changes?

As I outlined in a previous post about Patreon, I got a little dissatisfied with our current tiers and goals. I constantly feel I fail to make the things I promised —

  • E.g. I don’t do much “secret” posts only for supporters on Patreon (because I prefer doing public posts, for everyone to enjoy).

  • And I suck at making the features and videos requested by Patrons — it takes me way too much time to get to them, because in the meantime I do other features and videos that I consider “this has more urgent priority now”.

And I already started doing some late goals, paying no attention to whether we have achieved them financially:

I hope that new rewards will be better 🙂 Thanks for reading and take care!

Comments on the forum (1) ➤

Spread the word about new engine features! Also many other website improvements

Posted on

Look at our brand new features page, that describes important engine features with lots of screenshots! The summary of the features is also repeated on the main web page under the downloads.

I have various plans to improve the presentation of it, but at least now I believe we have a solid content 🙂 The page really reflects now the features I want to emphasize — including some things common to various game engines, and some features unique to Castle Game Engine. I hope this is a good promotional material to refer people to, if they want to know “what can Castle Game Engine give them”.

In the last few weeks, I made numerous other improvements to our documentation and website:

  1. Blender page much simplified, talks about glTF (and not about deprecated castle-anim-frames alternative), has new screenshots.

  2. Roadmap updated, because we have done a few things mentioned there! (lights, cameras, MainScene deprecation, RNL demo – done, physics – much in progress).

  3. Text and fonts page updated to describe advised approach to render text and customize font in the engine.

  4. API docs are now more friendly to mobile. I also removed the alternative apidoc-unstable version. We show now one API docs: the docs for the engine version that we recommend to download, which is now “the latest snapshot”. We also link to API docs more consistently now.

  5. Patreon panel at the header, with clearly visible percent to next goal, updated to use current Patreon colors and watermark.

  6. Better youtube URL, https://www.youtube.com/c/CastleGameEngine

  7. Various other documentation updates – better screenshots, reflect that the default shading is now Phong, optimized page loading in many cases etc.

  8. Merged Scene Graph (X3D) section into Documentation. Going forward, at some point I hope to merge it even with API docs.

  9. We no longer link to obsolete Web3D 2015 tutorial (you can still find it on GitHub, but we don’t recommend it anymore).

Comments on the forum ➤

New components to generate terrains, along with a demo including water and planting trees

Posted on

Terrain, water, trees designed in Castle Game Engine editor
Terrain, water, trees designed in Castle Game Engine editor
Water reflections
Terrain wireframe, water rect underneath
Terrain with one size larger (and visible fog in the distance)
Trees planted with TCastleStickToSurface to stick on terrain
Alternative emphasis for steep texture layer
Terrain heights from a simple image
Terrain heights from a simple image
Terrain heights from a simple image
Terrain heights from a simple image
Combining terrain heights from image with noise
Combining terrain heights from image with noise

I’m proud to announce a new Castle Game Engine feature: terrain components! A new TCastleTerrain component (TCastleTransform descendant) allows to visually design a terrain and you can of course use it from code or from editor and play with all the properties visually.

Terrain height data may come from:

  • A smooth noise, generated with TCastleTerrainNoise. This employs a few techniques for nice terrain generation, summing a few octaves of noise and adding simple tricks to make it smooth and heterogeneous.

  • An image (height map from image intensities), with TCastleTerrainImage. This is great to edit the heights in any 2D image editor – GIMP, Photoshop, or just Paint 🙂 etc.

  • A combination of the above (sum, min, max, multiplication) using TCastleTerrainCombine. This effectively allows to make an “expression tree” to calculate terrain as a combination of multiple TCastleTerrainImage and TCastleTerrainNoise. E.g. you could use TCastleTerrainNoise but add TCastleTerrainImage to force some particular mountain or valley, or use TCastleTerrainImage to make the borders of the noise go smoothly to 0 (to seamlessly connect terrain to a perfectly flat plane).

The terrain component features a ready visualization that combines 4 layers of materials (colors, textures, with per-layer setting for metallic, roughness) in an interesting manner. Height and slope (how steep is the terrain here) decide what mixture of layers to show at each point. See TCastleTerrain component docs for details.

The example in examples/terrain/ now presents a terrain made using this technique. Terrains of course can be combined with skybox (TCastleBackground), fog (TCastleFog), trees (make multiple instances of a tree using TCastleTransformReference to make them ultra-light on resources), and water (using CGE shader effects in OpenGL Shading Language in X3D).

We also have a new behavior, esp. useful for trees on a terrain: TCastleStickToSurface. Use this when you want an object to stick to another object’s surface, even when one of them is moving. Nice to position trees on the surface of terrain.

Have fun with it! And note that this is just the beginning 🙂 I’m aware that to make terrains really nice to use we need a few more features. In particular on TODO are:

  • tools to edit the terrain heights within CGE editor.

  • tools to edit the terrain textures mixture (splatmap) within CGE editor.

  • tools to plant trees and grass in CGE editor. You can kind of do it now, but it’s very manual.

  • more specialized and efficient rendering algorithm. Right now terrain in the end is just a simple big mesh of triangles. It’s actually quite fast to render (because modern GPUs can handle big shapes) but it’s not a sustainable way to render huge terrains.

Comments on the forum (1) ➤

KTX – mipmaps, ASTC, Docker – GitHub CLI, Compressonator, macOS fixes, node renames API, TCastlePlane.Size

Posted on

Invincible - Mark Grayson (3D model rendered using Castle Game Engine)

Here goes a list of recent Castle Game Engine improvements that I need to get off my chest 🙂 Overall I’m very happy with the engine state lately — we’ve done good features, we have big things coming (like new physics), and have good base and can polish the experience in many places. This resulted in recent improvements a bit “all over the place” as I test and polish 1st-user experience with e.g. our examples.

If you’re looking for an introduction to the engine, watch engine tutorial on our YouTube channel and explore our examples.

Please support the engine development on Patreon! We want to do everything from our roadmap and more!

Engine improvements done lately:

  1. We now support reading mipmaps from KTX (Khronos Texture) files.

  2. Automatic texture generation can be instructed to generate mipmaps for textures. Mipmaps allow trilinear filtering that looks good when the texture may be seen from various distances (typically useful for textures on 3D models, but there are cases when it makes sense for 2D too).

  3. ASTC compression is done to KTX format and using AMD Compressonator.

    This is our general direction for the future: We like KTX format (open standard from Khronos), we like open-source Compressonator with lots of output options. We will push our automatic texture generation to utilize these 2 (Compressonator to KTX) consistently for everything where possible. Other formats (like DDS) or tools (like NVidia texture tools ver2, with a proprietary successor in ver3) will get lower priority.

  4. Our Docker image now contains AMD Compressonator (to generate textures) and GitHub CLI (to interact with GitHub from continuous integration jobs).

  5. We’ve done a number of macOS fixes. They all can be tested using macOS build available prominently on our main page. The macOS build is done automatically by Jenkins and contains the latest CGE. Fixes:

    • Fixed crashes when clicking on lists in editor,

    • Fixed error message about -psn_... at 1st run,

    • Added ability to set CGE location (useful if you run CGE editor from zip downloaded from the Internet, which will be the most common case here). This may also be useful on non-macOS platforms.

    • By default we package app bundle to zip. You can change it though.

  6. I’ve done some thinking and made a documented decision to not try to rename nodes to be unique when loading (glTF, X3D, others).

  7. Following the above decision, I extended TCastleSceneCore.Node and TX3DNode.FindNode methods. Simpler and allow to search by class criteria too. Deprecated some old alternatives.

  8. Last but not least, TCastlePlane.Size gets a trivial but compatibility-breaking fix: it is now treated as total size in both dimensions. This means that size = (10, 10) results in rectangle around (0,0,0) that has size 10, for example from X = -5 to X = 5, and from Z = -5 to Z = 5. This is consistent with TCastleBox.Size and more natural.

    Previous interpretation resulted in larger rectangles. Size = (10, 10) resulted in rectangle around (0,0,0) that has size 20, like from X = -10 to X = 10.

Screen for this post shows Invincible and Mark Grayson 3D models from SketchFab created by ASideOfChidori. As usual when I don’t have a perfect screen to illustrate the current news post, I go ahead and pick something cool that can be rendered by Castle Game Engine 🙂 I did watch the Invincible lately and enjoyed it a lot. You can download the glTF file from SketchFab for free and play with it yourself, just drop it on a 3D viewport.

Comments on the forum ➤

Drag and drop in the editor improvements

Posted on

Drag and drop fun in CGE editor

A few improvements to the drag-and-drop experience in our editor:

  1. You can drag-and-drop from “Files” to “Hierarchy” panel. This will add a child to the currently selected item in the tree view.

  2. You can drag-and-drop images from “Files” to the central design area even when you’re not over a viewport. From such image, we will create TCastleImageControl. You can also drag-and-drop with Shift pressed to force creating a TCastleImageControl (instead of the default TCastleImageTransform) even when dragging over a viewport.

  3. You can drag-and-drop also .castle-user-interface files (will create a TCastleDesign that references them) or .castle-transform files (will create TCastleTransformDesign that references them). If you want to test it out, see e.g. examples/advanced_editor/advanced_loading_designs project.

  4. I also reported drag-and-drop bug with cursor on Lazarus GTK2 widgetset that affects us.

In effect (summing up previous and new features):

You can drag-and-drop various files from “Files” to “Hierarchy” or central design area.

Enjoy, happy dragging and dropping 🙂

Comments on the forum ➤

Bump mapping – updated documentation, example, defaults, everything is simpler now :)

Posted on

Steep parallax bump mapping in Castle Game Engine editor

We’ve made some small updates to how bump mapping (normal maps) work and wrote a nice simple documentation how to use bump mapping in our engine.

  1. Advised reading: bump mapping (normal maps) in Castle Game Engine.

  2. The default bump mapping is now bmBasic, this is much more natural than previous bmSteepParallaxShadowing.

  3. Using the parallax bump mapping is also easier now. Once you place the height map in the alpha channel of the normal map, just set TCastleRenderOptions.BumpMapping to something like bmSteepParallaxShadowing and optionally adjust TCastleRenderOptions.BumpMappingParallaxHeight. See the docs.

  4. Our old bump mapping example was completely reworked, to set up everything in the editor and is now much more straightforward. See examples/viewport_and_scenes/bump_mapping.

Comments on the forum ➤