「利用者:BNewmark/NextBGE/」の版間の差分

提供: wiki
移動先: 案内検索
 
(1版 をインポートしました)
 
(相違点なし)

2018年6月29日 (金) 06:10時点における最新版

A new Game Engine

General idea

First and foremost it has to have an option to publish commercial games. That probably means it has to have the option to load .blend files and start games from them.

Which in turn means all the bge should be is a launcher for games in .blend format.

I think it should be considered to choose a permissive license for everything that's not blender specific in nature. I.e. how the logic handles, how the network handles etc. I've seen enough bad netcode in games over the years to know that this is something many actually need.

This effectively means what the a game running on the bge should look like is this:

  • .blend file
  • independent layer for logic and networking
  • stuff that glues it to blender and other 3rd party modules like bullet
  • blender for rendering

If the new version of the game engine does the external launching anyway, there is no need to have the engine integrated into blender. All that blender needs to do is be able to prepare .blend files so they can be launched from the outside.

A new "Yo Frankie"

It would be best to simultaneously develop a new open source demo game. First and foremost this would be desirable to have a proper feature focus. Various difficulties that could arise and that hinder progress for the current engine would become obvious faster and it would be less of an issue to redo parts. It would also be good for training and showcasing purposes.

Issues that would be best fixed through redesign

  • The license issues

If the game is the .blend and blender is only a launcher, they are gone.

  • The physics integration

The current physics integration hinders progress in multiple ways. The bullet base classes are there but weren't used. There is no telling how far the effects of this spread.

  • Mesh creation while the engine runs

If we rethink how games are loaded and started we can also rethink how to do mesh creation during runtime.

  • New logic handeling without needing the bricks

The logic bricks are an abstraction for how to organise logic. They are useful for some rapid prototyping purposes but a roadblock for anything but that. Enough has been said about them elsewhere.

  • Scenes as lowest level

It's very deep ingrained that the lowest data level are scenes. This is not really useful because it removes the option for interacting scenes, like splitscreen or overlay scenes. Action between different scenes is done through a rather messy messaging system that's unwieldy to use, especially from the logic bricks.

  • Networking

Is there networking code? We'd need networking code. The age where singleplayer games is market dominating is over and designing an engine without lowlevel multiplayer support wouldn't be helpful.

The case for rewriting

I anticipate blender game engine fans saying: "Why would you do this, the engine runs almost fine, can't you just fix the issues we have with it right now?". This is my answer:

I understand you. I am a fan myself. It hurts me as well but the short answer is no.

Suppose it wouldn't be rewritten

The blender game engine is mostly held back by decsision that were made when it was first created. Some assumptions were made that have implications and consequences for the whole engine. The effort to adapt what we have to do what we want it to do is larger than the effort to write a somewhat new engine that does what we want.

These issues are so fundamental in fact that there are only two outcomes in case we don't rewrite from scratch:

1) We fix stuff to the best extent possible, which would still leave things undoable and broken.

2) We adapt what we have and break everything you already did in the process.

In conclusion if you want to do things with blender that can't be done right now, either you'll end up rewriting your entire project as well or it'll never be possible with the engine we have right now.

There is much to gain

Since we would do it from scratch we could be a lot more open. It wouldn't be "maintanence" it would be a new project. Potential users could come before everything is nailed down and contribute suggestions and ideas and hopefully code without being forced into an existing code base.

Features that could be put in at a lower level

  • Saving
  • Networking
  • AI
  • Pathfinding
  • LOD ?
  • live built-in mesh build & texture support