A Light Wrapper Around The Template Engine inja for Your Godot Games

Ginja is a string template engine for Godot 4.

Provides access to (some of) Inja's features.

This is a GdExtension addon for Godot 4.

Motivation

  • Generate tailored, efficient shaders.
  • Generate gdscript during development.
  • Generate dialogues, messages, and roleplays.

Demo

If you have a bleeding edge Godot 4 (more recent than alpha9), you can download and run the demo in Releases to see an example shader generation.

A gooey cursor using a generated shader

This source tree holds what's needed to build the shared libraries, not the shared libraries themselves since they are binary blobs.

Usage

var tpl = "Hello, {{ name }} !"
var ginja = Ginja.new()
var msg = ginja.render(tpl, {
    'name': "Nathanaël",
})

print(msg)

This is a very simple example, but you may use loops, conditions, comments, etc. See Inja's documentation for the available features.

You may also define your own functions for use in the templates:


func _ready():
    var ginja = Ginja.new()
    ginja.add_function("repeat", 2, self, "call_repeat")
    var msg = ginja.render("{{ repeat(msg, amount) }}", {
        'msg': "🎶!",
        'amount': 5,
    })
    assert(msg == "🎶!🎶!🎶!🎶!🎶!")


func call_repeat(msg: String, amount: int) -> String:
    return msg.repeat(times)

You HAVE TO specify the amount of arguments your custom function uses.

You can also define and register variadic functions, like sum here:


func _ready():
    var ginja = Ginja.new()
    ginja.add_function_variadic("sum", self, "call_sum")
    var answer = ginja.render("{{ sum(a, b, c) }}", {
        'a': 41,
        'b': -5,
        'c': 6,
    })
    assert(answer == "42")


func call_sum(arguments: Array) -> int:
    var total := 0
    for argument in arguments:
        total += argument
    return total

Current Limitations

  • LEAKING (see #1 — might not be us)
  • GdNative DOES NOT WORK IN EXPORTED HTML5 BUILDS
  • Single character unicode strings (like 🎶) behave oddly and yield empty strings sometimes
  • No personal plans for testing Windows or Mac, contribs welcome
  • Variadic user-defined functions need at least one parameter when called
  • Limited to Inja capabilities. Eg: Inja offers no filters
  • include and extend might not work in exported projects (to check)
  • Error when fetching callback Object from its RID: (but it works)
ERROR: Condition "_instance_bindings != nullptr" is true.
   at: set_instance_binding (core/object/object.cpp:1771)

Can't figure out if it's our fault or not, for this one. Idea: try Ref<Object> instead of RID&.

Support

Unsupported in HTML5 builds, beware ! See the state of GdNative on HTML5.

  •  Linux x86_64
  •  Linux x86_32 (to test)
  •  Windows x86_64 (to test)
  •  Windows x86_32 (to test)
  •  Mac x86_64 (to test)
  •  …

Shader and gdscript generation is still useful during development, even if we can't rely on it at runtime for now.

Install

The installation is as usual, through the Assets Library. (todo)

Meanwhile, dowload the latest Release (on the right), or clone this repository and build the shared objects.

The shared libs were not added to this repository, since they are build artifacts. (CI is coming)

Then you can copy the addons/ directory of this project into yours.

Finally, enable the plugin in Scene > Project Settings > Plugins.

Build

Build the shared libraries:

cd gdextension_generator
CORES=4 TARGET=debug build.sh
CORES=4 TARGET=release build.sh

Want to do this using CI, but we need a custom action, or to find a docker image with everything we need.

Setup Dev Notes

Use homebuilt Godot 4 from master, not alpha9.

Submodules

Ideally:

git submodule add -b 4.x https://github.com/godotengine/godot-cpp gdextension_generator/godot-cpp

Pragma 'til the 4.x branch exists:

git submodule add https://github.com/godotengine/godot-cpp gdextension_generator/godot-cpp

Remember to init the submodules!

Build

The first step is always to compile the godot-cpp library:

cd gdextension_generator/godot-cpp
scons target=debug

 

Then we can compile our shared library:

cd gdextension_generator
scons target=debug

It outputs in the addons/goutte.template.inja/bin/ directory.

The libs are voluminous because they are not stripped, you may do so:

strip addons/goutte.template.inja/bin/libgd*

Demo

The demo uses a symlink to get as child its sibling addons/ directory. Might not hold through git across platforms, beware.

Inja

Inja has been copied from 3.3, and the #include of json have been changed to use the local file: #include "json.hpp". Both are warts, and enlightened suggestions are welcome.

Vanilla GdScript Implementation

Just thoughts on a vanilla gdscript fallback for Ginja.

ANTLR

Needs gdscript templates and runtime first. Those are 404 for now.

CUSTOM

Would allow for easier customization of the enclosing markup tokens. Much more work. Faster code, though. (if done well)


Author: Goutte
Source code: https://github.com/Goutte/godot-addon-ginja
License: View license

#cpluplus 

What is GEEK

Buddha Community

A Light Wrapper Around The Template Engine inja for Your Godot Games
Autumn  Blick

Autumn Blick

1602565700

Game Development with .NET

We’ve launched a new Game Development with .NET section on our site. It’s designed for current .NET developers to explore all the choices available to them when developing games. It’s also designed for new developers trying to learn how to use .NET by making games. We’ve also launched a new game development Learn portal for .NET filled with tutorials, videos, and documentation provided by Microsoft and others in the .NET game development community. Finally, we launched a step-by-step Unity get-started tutorial that will get you started with Unity and writing C## scripts for it in no time. We are excited to show you what .NET has to offer to you when making games. .NET is also part of Microsoft Game Stack, a comprehensive suite of tools and services just for game development.

A picture of a game controller

.NET for game developers

.NET is cross-platform. With .NET you can target over 25+ different platforms with a single code base. You can make games for, but not limited to, Windows, macOS, Linux, Android, iOS, Xbox, PlayStation, Nintendo, and mixed reality devices.

C## is the most popular programming language in game development. The wider .NET community is also big. There is no lack of expertise and support you can find from individuals and user groups, locally or online.

.NET does not just cover building your game. You can also use it to build your game’s website with ASP.NET, your mobile app using Xamarin, and even do remote rendering with Microsoft Azure. Your skills will transfer across the entire game development pipeline.

logos of some gaming platforms supported by .NET

Available game engines

The first step to developing games in .NET is to choose a game engine. You can think of engines as the frameworks and tools you use for developing your game. There are many game engines that use .NET and they differ widely. Some of the engines are commercial and some are completely royalty free and open source. I am excited to see some of them planning to adopt .NET 5 soon. Just choose the engine that better works for you and your game. Would you like to read a blog post to help you learn about .NET game engines, and which one would be best for you?

#.net #.net core #azure #c# #game development #azure #cryengine #game developers #game development #game development with .net #game engines #games #monogame #playfab #stride #unity #visual studio #waveengine

lakshya world

lakshya world

1664775764

How to Create a Successful Gaming App?

How to create a game app is a comprehensive guide, explaining the entire process of creating and publishing games for iOS and Android. Covering all the essential information a budding game developer needs to know.

 

Read More - https://www.brsoftech.com/blog/how-to-create-a-game-app/

 

#game-engine  #game-development  #game  #games  #gaming 

Juned Ghanchi

1622631378

AI in Game Development - ITChronicles

For some years, artificial intelligence (AI) has been penetrating almost all digital spaces. After playing an instrumental role in digital communication and real-time problem-solving in many industries, AI in game development is expanding too. The significant impact of AI has played an instrumental role in the mobile and console game industry’s success.

AI has taken game development to new heights. AI helps to ensure greater satisfaction for gamers by addressing their objectives and concerns. AI also helps game developers come with higher-value additions and revisions based on data-driven insights,

AI is now showcasing many unprecedented opportunities in the gaming industry besides fulfilling its primary promise of delivering a great gaming experience. Here are some of the key ways AI is affecting the development of modern games.

**AI-Based Player Profiling **

Game developers now include AI-based player profiling within the game frameworks. This offers a game-playing experience that suits the target player profiles’ characteristic elements. You can hire game developers in India who are experts in creating AI-based player profiles equipped and thoroughly trained with game playing styles and different in-game player behaviors. These talented game developers can deliver a highly real-life environment within the game thanks to precise player profiling based on AI technology.

Read More: https://itchronicles.com/artificial-intelligence/ai-in-game-development/

#game development #game programming #game algorithms #game character design

Top Mobile Game Engines & Development Platforms

Mobile game development companies should have a thorough knowledge of the platform on which they are planning to develop the game. Factors like having a large developer community, easy to code, working on both the OS platforms (Android and iOS) must be some of the key features that should be looked at. Moreover, the platform should be such that it should support native as well as cross-platform mobile gaming apps.

Keeping all these in mind, we have prepared a full-throttle list of mobile game development platforms that are in trend and can help you in developing the best gaming product for the targeted audience.

Take a look at the Game Developers’ most preferred Platform & Engines.

#Mobile Game Development Companies #Cross Platform Mobile Gaming Apps #Mobile Game Development Platforms #Mobile Game Development Engines #Game Developers

How to Develop an NFT Gaming Platform From Scratch?

In general, developing an NFT gaming platform from scratch is similar to creating any blockchain application. Still, there are some unique aspects of NFT game development that make them worthy of mentioning in a step-wise order. The steps below give you a glimpse of building an NFT gaming platform from scratch.

  • Initially, one must plan all the facets of an NFT game. This includes technology, gameplay nature, blockchain(s) to work, market, target audience, competitors, and business plans. A road map should be drawn based on the observations.
  • Now, design the game’s prototype and get it tested with limited users. Based on the feedback, you can shape the game's front-end by designing all the in-game aspects.
  • Then, create the back–end features for the NFT gaming platform. Here, you should also integrate blockchain(s), smart contracts, and native tokens of your game.
  • Now, test the NFT gaming platform extensively for bugs and debug any errors that might be present.
  • At last, launch the NFT gaming platform for public use. Get gamer feedback and implement them in future updates to stay competitive in the gaming world.

If you want to create an NFT gaming platform, consider approaching a development firm that can help you realize your ideas.

#nft #game-development #games #gaming #game app development #nftmarketplace #blockchains