Even if you managed a good framerate, would you get good uniform frame pacing?
It's not that it's impossible, I'm just skeptical
Even if you managed a good framerate, would you get good uniform frame pacing?
It's not that it's impossible, I'm just skeptical
You've just described most game engines that use a "scripting language" - even those that use C# do it this way (barring maybe one exception I can think of)
No?
See: data scientists. And really any scientist whose daily job involves statistics.
The only thing we do is P/Invoke native draw calls. OpenGL, DirectX, Vulkan, they expose C functions that we call with pinned memory. That’s about where it stops. Everything else is in C#. Events, actions, game logic, networking, file system, all in C#.
> Python is used for scripting the editor only, not in-game behaviors.
> For implementing entity behaviors the only out of box ways are C++, ScriptCanvas (visual scripting) or Lua. Python is currently not available for implementing game logic.
C++, Lua, and Python all implement CFFI (C Foreign Function Interface) for remote function and method calls.
"Using CFFI for embedding" https://cffi.readthedocs.io/en/latest/embedding.html :
> You can use CFFI to generate C code which exports the API of your choice to any C application that wants to link with this C code. This API, which you define yourself, ends up as the API of a .so/.dll/.dylib library—or you can statically link it within a larger application.
Apache Arrow already supports C, C++, Python, Rust, Go and has C GLib support Lua:
https://github.com/apache/arrow/tree/main/c_glib/example/lua :
> Arrow Lua example: All example codes use LGI to use Arrow GLib based bindings
pyarrow.from_numpy_dtype: https://arrow.apache.org/docs/python/generated/pyarrow.from_...
https://github.com/scikit-learn-contrib/sklearn-pandas :
> Sklearn-pandas: This module provides a bridge between Scikit-Learn's machine learning methods and pandas-style Data Frames. In particular, it provides a way to map DataFrame columns to transformations, which are later recombined into features.
Pandas docs > PyArrow > I/O https://pandas.pydata.org/docs/user_guide/pyarrow.html#i-o-r... :
> By default, these functions and all other IO reader functions return NumPy-backed data. These readers can return PyArrow-backed data by specifying the parameter dtype_backend="pyarrow"
> [...] Several non-IO reader functions can also use the dtype_backend argument to return PyArrow-backed data including: to_numeric() , DataFrame.convert_dtypes() , Series.convert_dtypes()
df = pandas.read_csv(".csv", dtype_backend="pyarrow")
sx = pandas.Series([1.0,2.0], dtype="float32[pyarrow]")Yeah, I mean that's pretty much the main role of a game engine's scripting language - gluing the lower level pieces together in the game-specific way. We use Python for all of our runtime application logic in UnrealEngine and performance is far beyond good enough and significantly faster than blueprints.
But performance does matter. The technical state of the art (ray tracing etc) is largely irrelevant. If you make a game with cutting-edge technical features, the performance of it will be judged accordingly. If a game with a modest feature set demands resources in excess of its apparent need, it's wasting those resources.
In other words, a washing machine that uses more water than others is a worse washing machine.
To be clear, this isn't to say that you're wrong. Everyone can continue doing what they're doing -- really.
Python's slowness seems to be overstated.
It sounds like this engine is not implemented in 100% python.
See also Panda3D https://www.panda3d.org/, which was used in commercial games back in the day, and is exactly what you are describing!
Everyone starts somewhere.