Coder Social home page Coder Social logo

upbge / upbge Goto Github PK

View Code? Open in Web Editor NEW
1.4K 84.0 180.0 985.26 MB

UPBGE, the best integrated game engine in Blender

Home Page: https://upbge.org

License: Other

CMake 1.29% Makefile 0.02% Python 10.66% Shell 0.01% C 5.17% C++ 79.60% Cuda 0.01% Objective-C++ 0.98% GLSL 2.09% Batchfile 0.04% Perl 0.01% Slash 0.01% HTML 0.01% Metal 0.02% Hack 0.09%
blender-game-engine bge blender game-engine-development game-development

upbge's Introduction

UPBGE (Uchronia Project Blender Game Engine) is a fork of Blender created by Porteries Tristan (a Blender Game Engine developer) and some of his friends in September 2015.

It's an independent branch, and its aim is to clean up and improve current Blender Game Engine (BGE) code, experiment with new features, and implement forgotten features that currently exist but have not been merged with the official Blender trunk.

Currently, after the Blender Foundation's decision to delete BGE from next 2.8 release UPBGE becomes, de facto, the only one to follow the development of the Game Engine. This gives us even more freedom, if possible, to make certain decisions, since we will never, in any way, come into conflict with the official version.

Its development cycle spans the course of 4 months: 3 months to add new features and refactors and 1 months to fix bugs. Then a new release is made available for download (around 3 or 4 per year).

Regularly, the UPBGE merges the official Blender new patches, to stay up-to-date with the last Blender evolutions.

The UPBGE team is composed of volunteers; BGE users who are interested in the game engine development, a web developer, and a communication manager.

What's new?

You can take a look at the release notes to see all the new features: UPBGE Release Notes

From The Team

We hope that new users will join the project, to help us test new features, report bugs, provide feedback and ideas to improve UPBGE (https://github.com/UPBGE/blender/issues), and that new developers will join the team to help us develop shiny new features for the game engine.

upbge's People

Contributors

aligorith avatar antonioya avatar ben2610 avatar blendify avatar brechtvl avatar dfelinto avatar dingto avatar drsybren avatar hansgoudey avatar harley-acheson avatar ideasman42 avatar jacqueslucke avatar jbakker-atmind avatar jeroenbakker-atmind avatar jesterking avatar joeedh avatar julianeisel avatar kjym3 avatar lazydodo avatar lichtwerk avatar lukastoenne avatar nicholasbishop avatar pablodp606 avatar panzergame avatar psy-fidelious avatar richardantalik avatar sergeyvfx avatar significant-bit avatar tonroosendaal avatar youle31 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

upbge's Issues

Other: Make Lib like BGE that is LGPL?

is it even possible to rewrite the BGE module and release it under a new license?

Not copy, but rewrite from scratch ? "clean-room implementation"
How long would that take?

what about Mathutils?

I intend on releasing my games GPL, but apparently importing BGE is linking,
so people who would make large projects are scared off by this.

so if people could do

import upbge
import upbgemathutils

and both libs were LGPL this would fix that right?

Please correct me anywhere I am wrong, etc.

Request: More options in steering actuator

Currently the steering actuator moves and rotates at the same time, it just looks strange to see someone back up and do a 180 at the same time and not change rate in speed,

Can we have a min face angle mode?

where the actor rotates in place until he is lined up and then walks?

This is for Pagio's point and click, most of his art is done, but this has been bugging him,

I hacked out a few solutions, but a out of the box character navigation system is very handy, and eats far less CPU time then doing NavMesh.findPath() and comparing a bunch of angles in python.

Bug: Animated UV Texture is crashing and buggy

When i want to use animated UV textures in BGE it constantly crashes, when i use .png files.
When i use .jpg files it kinda works but only buggy. The Sprites doesnt go in the correct order and sometimes its just a glitchy texture.

I have no real idea why but for sure I am not the onlyone.

Character jump does not work on linked instances created in official blender

jump.zip

Tested with UPBGE 6fe25a0 on Linux64

To replicate
Open attached main.blend in UPBGE. Observe character jumping does not work. Space = Python, A = logic bricks. The same blend in official blender does work.

Workaround
Open character.blend with UPBGE, select the player object, save, then re-open main.blend

Steps to recreate the example

  1. Using official blender - create a character physics object, add to a group, and save as character.blend
  2. Link the group to another blend
  3. Open the new blend in UPBGE, observe that jump does not work

visibilty with the lod system

Could we have the visibility of an object tied into upbge the lod system?Like if you are certain
distance away from it would become visible.If you are not within that distance it would stay invisible.

feature request: Edit Video Texture module to accept PIL image

currently I can't pass a PIL image to a texture slot without processing each pixel, this is quite slow.

could we add a function to accept a PIL image and pass it to a texture?

this will open up in game dynamic painting and in game destruction and in game character modifications like decals etc.

Static libs missing from Linux release

Downloaded from https://download.upbge.fr/releases/
Could be WITH_STATIC_LIBS is off and/or static versions of libs are missing from the build machine.

Some dynamic libs it couldn't find:
libpython3.5.so.1.0
libGLEW.so.1.13
libopenal.so.1
libfftw3.so.3
libjack.so.0
libSDL2-2.0.so.0
libtiff.so.5
libOpenImageIO.so.1.6
... possibly others, had to stop here

Pass changes to a mesh to GPU using VBO ->only pass changes

right now if you edit one single vertex, it has to pass the entire mesh to the gpu at each change,

Moguri said you could pass a VBO that was just the changes to the gpu instead, allowing the user to manipulate large meshes XYZ and RGB without lag.

useful for

  • in game terrain editing
  • in game modeling
  • real time destruction
  • in game splat map editing

Change object names with Python at runtime

It would be great to have a Python command to change an object name.

That would be helpful if you want to add objects with addObject and change their attributes, because they all have the same name so scene.objects won't work for this purpose. With such a command you could edit the name directly after #adding them and edit other attributes later on or in another script.

What about object.name = "insertANameHere" ?

Request: Movement Sensor

A sensor that detects when a object has moved or rotated

Potential use = triggering dormant AI if they are moved as collision sensor will always detect the ground the unit is resting on. Will be used to change actor animation states in wrectified (like walk or fall etc)

Thank you.
BPR

Request: Particle system

Today game engines support build-in particle systems. It would be nice to have a build-in particles into UPBGE. Some features, they could have: The particles could be multitreaded, could use instances, they could cast shadows.

Nodeeditor for Vertex shader a possible and useful idea?

I don't know if a nodeeditor for vertex shader is possible or makes sense but in my opinion it would be a good feature in context to the current material nodeeditor that only edit the fragment shader. Because so we would be able to manipulate geometry (for example for wind or wave.. animations) without writing a custom shader manually. This would have some advantages.

  • users don't need full knowledge about writing glsl shaders
  • it saves time because you don't need to rewrite the complete material
  • easier to edit / make changes to material
  • and maybe changes are visible in the viewport (?)

What you think about that?

By the way an property node would also an nice feature also for the current nodeeditor so we could have ingame controll about the material via logic bricks/python.

Request: Allow in-game switching of materials

Currently a game object is stuck with the material it starts with. The only way to change it is by setting the source of GLSL fragment and vertex shaders. This has two disadvantages:

  • They need to be GLSL shaders and therefore can't have shadows
  • Each time you change the material in this manner it recompiles the shader which is slow

I propose adding a setMaterial function to the mesh object:
obj.meshes[0].setMaterial(mat_id_to_replace, bl_shader_instance)

While you still have to use an existing bl_shader instance, this should be relatively easy to implement and vastly speed up one thing I'm working on.

MathFu math lib: could it replace Moto?

C++ math library developed primarily for games focused on simplicity and efficiency
http://google.github.io/mathfu/index.html -webpage
https://github.com/google/mathfu - github

MathFu is a C++ math library developed primarily for games focused on simplicity and efficiency.
It provides a suite of vector, matrix and quaternion classes to perform basic geometry suitable for game developers. This functionality can be used to construct geometry for graphics libraries like OpenGL or perform calculations for animation or physics systems.

The library is written in portable C++ with SIMD compiler intrinsics and has been tested on the following platforms:
Android
Linux (x86_64)
OS X
Windows

Optimization:
MathFu is optimized using SIMD instructions (including NEON for ARM and SSE for x86 architectures). SIMD optimization is enabled by default based upon the target platform and compiler options used to build a project. In addition, MathFu provides compile time options to modify code generation, see Build Configurations for more details.

Could this be a replacement for the Moto library?

Request: Collision.hitObjectList[x].localImpulse

is there any way to record the collision impact from bullet for each hitObject in the hitObjectList?

Collision.hitObjectList[x].localImpulse = localized force impulse from collision

??? how would I tag Erwin Coumans ???

Request: Cascaded Shadow Maps

Cascaded shadow mapping is a technique to shadow large areas at reasonable memory and run-time cost. The basic idea is simple: Split the view frustum into several sub frustums and render a shadow map for each split. Since, naturally, splits closer to the viewer cover less area in world space (i.e. under perspective projection) you get better shadow map resolution close to the camera and less resolution further away.
I believe this shadow technique will be quite useful for UPBGE game devs.
Links ->
http://developer.download.nvidia.com/SDK/10.5/opengl/src/cascaded_shadow_maps/doc/cascaded_shadow_maps.pdf
https://msdn.microsoft.com/en-us/library/windows/desktop/ee416307(v=vs.85).aspx
http://dev.theomader.com/cascaded-shadow-mapping-1/

Request: Static Draw call batching?

Now that we are adding VBO support is it possible to implement static draw call batching?

I have a level assembly kit that is used repeatedly and uses a atlas, and the world could be much more robust if I had static draw call batching,

thank you for all your efforts!

Request: 2D Filter - Downsampling

Bug: Temp fix for generating unique compound physics shape?

In master they seemed to ignore the need for libNew or another function generating a unique compound object physics shape,

I run into this bug from many angles, but the latest iteration is for building maps in game,
and it's pretty serious, as I can't use instances of level pieces for the roots of compound shapes,

any root for any compound shape needs to be unique mesh data, and it's getting hard to work,
I've made the bare bones of something like the settlement building system in fallout, and your free to test with it etc.
LevelAssemblyStart (Tristan).zip

this is my work around. :|

Request: Textured area lights

Hi!
I have 2 questions:
1 - Did this fork implement martin upitis's textured area light?
2- When we see Upbge's commits in blender master branch?
Good luck!

Request: Decals

Feature request: add support for decals. This feature will allow the users of BGE to add detail to the levels of the game project, such ad dirt and etc... Ive searched the web and found some useful links:
http://blog.wolfire.com/2009/06/how-to-project-decals/
http://http.developer.nvidia.com/GPUGems/gpugems_ch20.html
https://www.opengl.org/discussion_boards/showthread.php/170039-Decal-%28as-Texture-mapping%29
http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/3d-decals-r1986

External Python components do not load

The ge_components branch returns an error when using external components:

ImportError: No module named 'testcomponent'
Unable to load component from testcomponent

This happens because the current blend directory is not added to sys.path until the game starts. I'm running this script as a temporary workaround:

import sys
sys.path.append('/path/to/your/folder')

opencl bullet

Are you going to try to impliment opencl bullet?It would be a nice feature to have.

Scripts imported by components are not reloaded at game start

Components branch, as a workaround I'm reloading modules at the top of my component scripts like so:

import imp
imp.reload(modulename)

Failure to do this also preserves the context of modules imported in-game, so you get data-freed errors accessing variables like bge.logic.mouse

Compile help

Can you help me to compile this fork.
I clone repos and compile it, but I don't see it's features like parallax and cubemap and ...!

Bug: Armatures don't skin correctly when using copy rot and spawned more than 1 from a hidden layer

this bug is in master as well,

a talented new user looked through the code and pointed to this as the answer

check point in kx_scene.cpp in static void update_anim_thread_func(TaskPool *pool, void *taskdata, int UNUSED(threadid))
this threaded func call on dublicated armature with modifiers once and twice times per one frame randomly!!! when it happened, mesh deform are glitches. also is performance problem, when many armature objects on scene.

Matcap segfault

Hi!
When I click on matcap checkbox (in shading), blender crased.
Arch Linux
Here is /tmp/blender-crash.txt :
`
Blender 2.77 (sub 0), Commit date: 1970-01-01 00:00, Hash unknown
bpy.context.space_data.use_render_border = True # Property
bpy.context.space_data.use_render_border = False # Property
bpy.context.space_data.use_render_border = True # Property
bpy.context.space_data.use_render_border = False # Property
bpy.context.space_data.show_camera_path = True # Property
bpy.context.space_data.show_camera_path = False # Property
bpy.context.space_data.show_bundle_names = True # Property
bpy.context.space_data.show_bundle_names = False # Property
bpy.context.space_data.show_textured_solid = True # Property

backtrace
/home/.../bin/UPBGE/blender(BLI_system_backtrace+0x1d) [0x1271dad]
/home/.../bin/UPBGE/blender() [0x95f866]
/usr/lib/libc.so.6(+0x33330) [0x7ff2010d2330]
/home/.../bin/UPBGE/blender(GPU_create_gl_tex+0x506) [0xed3f06]
/home/.../bin/UPBGE/blender(GPU_texture_from_preview+0x75) [0xee3995]
/home/.../bin/UPBGE/blender(GPU_pass_bind+0x7f) [0xee5fff]
/home/.../bin/UPBGE/blender(GPU_material_bind+0x82) [0xee0372]
/home/.../bin/UPBGE/blender(GPU_object_material_bind+0x27f) [0xed622f]
/home/.../bin/UPBGE/blender() [0xf67fe7]
/home/.../bin/UPBGE/blender() [0xa51020]
/home/.../bin/UPBGE/blender(draw_object+0x18d3) [0xa5ed13]
/home/.../bin/UPBGE/blender() [0xa2ade4]
/home/.../bin/UPBGE/blender(view3d_main_region_draw+0x181) [0xa2e971]
/home/.../bin/UPBGE/blender(ED_region_do_draw+0xa37) [0xc15e57]
/home/.../bin/UPBGE/blender(wm_draw_update+0x674) [0x9667c4]
/home/.../bin/UPBGE/blender(WM_main+0x28) [0x961f98]
/home/.../bin/UPBGE/blender(main+0xecb) [0x942ffb]
/usr/lib/libc.so.6(__libc_start_main+0xf0) [0x7ff2010bf710]
/home/.../bin/UPBGE/blender(_start+0x29) [0x95f309]
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.