GithubHelp home page GithubHelp logo

touilleman / godot-python Goto Github PK

View Code? Open in Web Editor NEW
1.8K 90.0 136.0 7.23 MB

Python support for Godot 🐍🐍🐍

License: Other

Makefile 0.02% Python 87.45% C 0.58% GDScript 0.38% Cython 11.55%
godot binding python hacktoberfest

godot-python's People

Contributors

albertas avatar buresu avatar colinkinloch avatar cridenour avatar dranorter avatar follower avatar garyo avatar matheus2740 avatar mhilbrunner avatar nat-72o avatar paolobb4 avatar prokopst avatar razcore-rad avatar swenner avatar touilleman avatar williamtambellini 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  avatar  avatar  avatar  avatar  avatar  avatar

godot-python's Issues

Check float/double size are respected between Godot and Python

Both godot and micropython handle real as float or double according to compilation parameter:

  • Godot macro REAL_T_IS_DOUBLE
  • Micropython macro MICROPY_FLOAT_IMPL (set to MICROPY_FLOAT_IMPL_FLOAT or MICROPY_FLOAT_IMPL_DOUBLE)

MICROPY_FLOAT_IMPL should depend of REAL_T_IS_DOUBLE

Please help a student Makefile:67: recipe for target 'setup' failed

Hello,

Looking for a little setup advice.

ln: failed to create symbolic link '/home/ry/GoDOT/GODOT/godot-python/godot/godot': No such file or directory
Makefile:67: recipe for target 'setup' failed
make: *** [setup] Error 1

How do I connect the folder correctly?

Thanks in advance

Error while installing pycrypto

I can install successfully some libraries while not anothers, for example pycrypto.

` creating build/lib.linux-x86_64-3.6/Crypto/Signature
copying lib/Crypto/Signature/init.py -> build/lib.linux-x86_64-3.6/Crypto/Signature
copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-x86_64-3.6/Crypto/Signature
copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-x86_64-3.6/Crypto/Signature
error: [Errno 20] Not a directory: '/tank/lana/_apps/godot-python-0.9.0/lib/python36.zip/lib2to3/Grammar.txt'

----------------------------------------

Command "/tank/lana/_apps/godot-python-0.9.0/python-bin -u -c "import setuptools, tokenize;file='/tmp/pip-build-18406z3z/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-l85aj1tv-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-18406z3z/pycrypto/
`

pythonscriptcffi initialization code failed

On ubuntu 17.04. With your master branch. Was I supposed to use the beta release from the release tab?!

Saw your beta release on twitter :D! Nices!! Well, I compiled with latest godot master branch (ref. afbb5261e660acf08dd62f698d353e95fc7fb6bb), but on running godot I get:

modules/pythonscript/py_script.cpp:27:_bind_methods
modules/pythonscript/py_language.cpp:284:PyLanguage     (93900151122192)
modules/pythonscript/py_language.cpp:20:init    (93900151122192)
Traceback (most recent call last):
  File "<init code for 'pythonscriptcffi'>", line 3341, in <module>
  File "<init code for 'pythonscriptcffi'>", line 3312, in __init__
  File "<init code for 'pythonscriptcffi'>", line 2956, in get_global_constansts
  File "<init code for 'pythonscriptcffi'>", line 2559, in godot_dictionary_to_pyobj
TypeError: expected a cdata struct/union/array object

From: pythonscriptcffi
compiled with cffi version: 1.10.0
_cffi_backend module: '/home/razvan/.local/lib/python3.6/site-packages/_cffi_backend.cpython-36m-x86_64-linux-gnu.so'
sys.path: ['/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/razvan/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

function pythonscriptcffi.pybind_init_sys_path_and_argv() called, but initialization code failed.  Returning 0.
ERROR: init: Method/Function Failed.
   At: modules/pythonscript/py_language.cpp:29.
modules/pythonscript/py_language.cpp:97:~PyLanguage     (93900151122192)

ModuleNotFoundError: No module named '_bz2'

Hey there! I'm trying to incorporate a tensor-flow chat bot but am getting this error when I run the scene:

  File "/media/ecludian/Data/GameDev/Godot/godot-python-0.9.0/lib/python36.zip/bz2.py", line 23, in <module>
ModuleNotFoundError: No module named '_bz2'

Is there anyway to add support for bz2? Cheers!

Transform2D implementation

Wanted to implement Transform2D but doesn't seem like Transform2D is exposed in GDScript. Do we need this? Looks like it's used only internally.

It crash and leave this log on the terminal.

optirun ./godot.x11.opt.tools.64.llvm
GLES3: max extensions: 317
hdr supported: 1
GLES3: max ubo light: 409
GLES3: max ubo reflections: 455, ubo size: 144
Could not find platform independent libraries
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to [:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Errors when execute test/example

Hi!, I would like to try Godot Engine with Python to treat 3D objects, the compilation seems to finish correctly, but when running test/example I encounter the following errors:

$ make test
$ make run_example

Errors:

cd tests/bindings && /home/544GH5/Godot-src/godot-python/godot/bin/godot* 
GLES3: max extensions: 165
GLES3: max ubo light: 409
GLES3: max ubo reflections: 455, ubo size: 144
ERROR: load: No loader found for resource: /home/544GH5/Godot-src/godot-python/godot/bin/godot.x11.tools.64.llvm
   At: core/io/resource_loader.cpp:213.
ERROR: start: Failed loading scene: /home/544GH5/Godot-src/godot-python/godot/bin/godot.x11.tools.64.llvm
   At: main/main.cpp:1462.
WARNING: cleanup: ObjectDB Instances still exist!
   At: core/object.cpp:1910.
ERROR: cleanup: There are still MemoryPool allocs in use at exit!
   At: core/dvector.cpp:69.

/godot/bin$ ls

godot.x11.tools.64  godot.x11.tools.64.llvm  libpython3.6m.so.1.0

Thx!

Windows godot-python

Make an instruction for Windows users! I did not understand what to do!
How to make this add-on for Godot ???

Some failed tests

On the Discord channel, @touilleMan asked me to post some information about failed tests I encountered while testing the module. So here's some of the information he wanted.

If I recall, this was the configuration I used to build the engine:

scons platform=x11 gdnative_wrapper=yes target=release_debug tools=yes

The command I used to build the module:

scons platform=x11-64 backend=cpython godot_binary=/home/user/code/godot-master/bin/godot.x11.opt.64 gdnative_wrapper_lib=/home/user/code/godot-master/bin/libgdnative_wrapper_code.x11.opt.64.a

Command I used to test it:

scons platform=x11-64 backend=cpython godot_binary=../godot-master/bin/godot.x11.opt.tools.64 gdnative_wrapper_lib=../godot-master/bin/libgdnative_wrapper_code.x11.opt.64.a test

And the output from the test, found here.

Need more info to start godot-python

I am interested in this project because I want to use general python modules in Godot.
I visited the page https://github.com/touilleMan/godot-python and saw Quickstart to visit https://github.com/touilleMan/godot-python/releases.
Because all I could see there was the link to the file , I dowloaded windows-64 zip and extracted it.
Then moved those folders into my Godot project to see the folder not recognized by Godot.
I wish I could see some exact steps in the description for Quickstart or Wiki here.
Thanks.

make test errors

With latest version of git godot + godot-python I'm getting these errors with make test:

============================================================================================================= test session starts =============================================================================================================
platform linux -- Python 3.6.1, pytest-3.0.5, py-1.4.31, pluggy-0.4.0                                                                                                                                                                          
rootdir: /home/razvan/Documents/projects/dev/github-godot-python/tests/bindings, inifile:                                                                                                                                                      
collected 874 items                                                                                                                                                                                                                            
                                                                                                                                                                                                                                               
test_array.py .....................................................................                                                                                                                                                            
test_basis.py ....................................................                                                                                                                                                                             
test_color.py .................................................                                                                                                                                                                                
test_dictionary.py .x.................................                                                                                                                                                                                         
test_dynamic_bindings.py .......X.                                                                                                                                                                                                             
test_godot_bindings_module.py ...                                                                                                                                                                                                              
test_node_path.py ................                                                                                                                                                                                                             
test_plane.py ...................                                                                                                                                                                                                              
test_pool_arrays.py ...........................................................................................................................................................................................................................
...................................................................................................                                                                                                                                            
test_quat.py .......................................................X                                                                                                                                                                          
test_rect2.py .........................                                                                                                                                                                                                        
test_rect3.py ...................................                                                                                                                                                                                              
test_rid.py ............                                                                                                                                                                                                                       
test_tools.py ..................                                                                                                                                                                                                               
test_transform2d.py .......................                                                                                                                                                                                                    
test_vector2.py ...................................................................                                                                                                                                                            
test_vector3.py ......................F.............................................
================================================================================================================== FAILURES ===================================================================================================================
______________________________________________________________________________________________________ TestVector3.test_methods[snapped] ______________________________________________________________________________________________________
                                                                                                                                                                                                                                               
self = <test_vector3.TestVector3 object at 0x7f4d1b021940>, args = ['snapped', <class 'Vector3'>, (0.5,)]                                                                                                                                      
                                                                                                                                                                                                                                               
    @pytest.mark.parametrize('args', [                                                                                                                                                                                                         
        ['abs', Vector3, ()],                                                                                                                                                                                                                  
        ['angle_to', float, (Vector3(), )],                                                                                                                                                                                                    
        ['ceil', Vector3, ()],                                                                                                                                                                                                                 
        ['cross', Vector3, (Vector3(), )],                                                                                                                                                                                                     
        ['cubic_interpolate', Vector3, (Vector3(), Vector3(), Vector3(), 0.5)],                                                                                                                                                                
        ['distance_squared_to', float, (Vector3(), )],                                                                                                                                                                                         
        ['distance_to', float, (Vector3(), )],                                                                                                                                                                                                 
        ['dot', float, (Vector3(), )],                                                                                                                                                                                                         
        ['floor', Vector3, ()],                                                                                                                                                                                                                
        ['inverse', Vector3, ()],                                                                                                                                                                                                              
        ['length', float, ()],                                                                                                                                                                                                                 
        ['length_squared', float, ()],                                                                                                                                                                                                         
        ['linear_interpolate', Vector3, (Vector3(), 0.5)],                                                                                                                                                                                     
        ['max_axis', int, ()],                                                                                                                                                                                                                 
        ['min_axis', int, ()],                                                                                                                                                                                                                 
        ['normalized', Vector3, ()],                                                                                                                                                                                                           
        ['reflect', Vector3, (Vector3(), )],                                                                                                                                                                                                   
        ['rotated', Vector3, (Vector3(), 0.5)],                                                                                                                                                                                                
        ['slide', Vector3, (Vector3(), )],                                                                                                                                                                                                     
        ['snapped', Vector3, (0.5, )],                                                                                                                                                                                                         
    ], ids=lambda x: x[0])                                                                                                                                                                                                                     
    def test_methods(self, args): 
        v = Vector3()                                                                                                                                                                                                                  [0/9692]
        # Don't test methods' validity but bindings one
        field, ret_type, params = args
        assert hasattr(v, field)
        method = getattr(v, field)
        assert callable(method)
>       ret = method(*params)

test_vector3.py:70:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Vector3(x=0.0, y=0.0, z=0.0)>, val = 0.5

>   ???
E   TypeError: initializer for ctype 'struct godot_vector3 *' must be a cdata pointer, not float

<init code for 'pythonscriptcffi'>:1229: TypeError
========================================================================================= 1 failed, 870 passed, 1 xfailed, 2 xpassed in 1.09 seconds ==========================================================================================

Fix leaking PyScript instance warning on game closing

When closing game, PyScript instance are not removed:

WARNING: cleanup: ObjectDB Instances still exist!
   At: core/object.cpp:1968.
Leaked Instance: PyScript:899
Leaked Instance: PyScript:907
ERROR: clear: Resources Still in use at Exit!
   At: core/resource.cpp:389.
Orphan StringName: Master
Orphan StringName: PyScript
StringName: 2 unclaimed string names at exit.
ERROR: cleanup: There are still MemoryPool allocs in use at exit!
   At: core/dvector.cpp:69.

Create Games using Godot-Python and Avoid Usage Of Godot Tools

First of all, congratulations for your efforts to add Python support to Godot - huge Python fan here that was looking for something similar.

I have a need however to be able to quickly write a game and execute it without having to open Godot tools. Import the assets from the script etc. and do godot script.py and have it run.

How could that happen ? Thanks !

Some questions

So you say that the build only works on Linux at the moment
But say if I make a demo in Linux, can I still export to the other OS's that Godot exports to?

Also, if I include external python modules; how does that effect making the project export-able to all platforms?

Is debugging included in the workflow?

Converting from GDscript to Python or vice versa

Have you thought about adding such functionality ?

The reason I am asking is that there will be large codebases in GDscript and it would make sense to have a transpiler in order to be able to work with them.

Collision with new OpenSSL package

When running run_godot.sh,
the following error occurs when openssl version is newer than 1.0.0:

/home/centos/Desktop/godot-python-0.9.0/godot.x11.opt.tools.64.llvm: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

Getting Started??

Its not clear how we are supposed to use this. The readme file only explains how to build from source.

I have godot 3.0 installed and downloaded the latest release of this project.

How do I set up the library in my project?

pythonscript.gdnlib missing from release packages

Hi, this is a great project you've started here and I'm very exited about it but I'd like to mention that the packages found in the releases page only contain the folder pythonscript but are missing the file pythonscript.gdnlib that's required by gdnative wich means you can't even check out godot-python withougt having to go though compiling from src wich could be a turnoff for many people either for lack of time or because it can be intimidating for newer programmers (I know it still is a little intimidating for me).
I get it's best to build it yourself and that's what I ended up doing but still this is an easy thing to remedy, and it's such a great tool that I would hate to see people shy away from it for such a silly thing. Maybe it should also be mentioned in the readme that both pythonscript/ and pythonscript.gdnlib are required to be within the godot project.

I hope I don't come out as too pretentious, just trying to add my two cents.

PS: just copy-pasting pythonscript.gdnlib from the pong example dind't work for me, it would actually crush godot. Maybe because the releases are behind in respect to src?

No such file godot/modules/gdnative/godot.h when building on macos

I'm trying to build godot-python under macos. I've got following error:

╰─ make generate_gdnative_cffidefs
/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py --output /Users/roman/work/godot-python/pythonscript/cffi_bindings/cdef.gen.h /Users/roman/work/godot-python/godot
clang: error: no such file or directory: '/Users/roman/work/godot-python/godot/modules/gdnative/godot.h'
clang: error: no input files
Traceback (most recent call last):
  File "/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py", line 61, in <module>
    fd.write(generate(args.godot_root_path))
  File "/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py", line 47, in generate
    first_line = next(i for i, line in enumerate(splitted_src) if 'godot' in line.lower())
StopIteration
make: *** [generate_gdnative_cffidefs] Error 1

I tried to change gdnative/godot.h to gdnative/gdnative.h but it cause other strange errors like:

╰─ make generate_gdnative_cffidefs
/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py --output /Users/roman/work/godot-python/pythonscript/cffi_bindings/cdef.gen.h /Users/roman/work/godot-python/godot
In file included from /Users/roman/work/godot-python/godot/modules/gdnative/godot/gdnative.h:50:
/usr/include/TargetConditionals.h:269:6: error: #elif after #else
    #elif defined(TARGET_CPU_PPC64) && TARGET_CPU_PPC64
     ^
/usr/include/TargetConditionals.h:279:6: error: #elif after #else
    #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86
     ^
/usr/include/TargetConditionals.h:289:6: error: #elif after #else
    #elif defined(TARGET_CPU_X86_64) && TARGET_CPU_X86_64
     ^
/usr/include/TargetConditionals.h:299:6: error: #elif after #else
    #elif defined(TARGET_CPU_ARM) && TARGET_CPU_ARM
     ^
/usr/include/TargetConditionals.h:309:6: error: #elif after #else
    #elif defined(TARGET_CPU_ARM64) && TARGET_CPU_ARM64
     ^
/usr/include/TargetConditionals.h:319:6: error: #else after #else
    #else
     ^
/usr/include/TargetConditionals.h:369:2: error: #endif without #if
#endif
 ^
/usr/include/TargetConditionals.h:371:2: error: #endif without #if
#endif  /* __TARGETCONDITIONALS__ */
 ^
/Users/roman/work/godot-python/godot/modules/gdnative/godot/gdnative.h:97:31: warning: missing
      terminating ' character [-Winvalid-pp-token]
        GODOT_ERR_CANT_OPEN, ///< Can't open a resource/socket/file
                                     ^
In file included from /Users/roman/work/godot-python/godot/modules/gdnative/godot/gdnative.h:177:
In file included from /Users/roman/work/godot-python/godot/modules/gdnative/godot/string.h:38:
In file included from /usr/include/wchar.h:72:
In file included from /usr/include/Availability.h:190:
/usr/include/AvailabilityInternal.h:22938:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_12
         ^
/usr/include/AvailabilityInternal.h:22867:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_4
         ^
/usr/include/AvailabilityInternal.h:22800:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_3
         ^
/usr/include/AvailabilityInternal.h:22737:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_2
         ^
/usr/include/AvailabilityInternal.h:22678:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11
         ^
/usr/include/AvailabilityInternal.h:22623:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10_3
         ^
/usr/include/AvailabilityInternal.h:22572:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10_2
         ^
/usr/include/AvailabilityInternal.h:22525:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10
         ^
/usr/include/AvailabilityInternal.h:22482:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9
         ^
/usr/include/AvailabilityInternal.h:22443:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8
         ^
/usr/include/AvailabilityInternal.h:22408:10: error: unterminated conditional directive
        #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_7
         ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.
Traceback (most recent call last):
  File "/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py", line 61, in <module>
    fd.write(generate(args.godot_root_path))
  File "/Users/roman/work/godot-python/tools/generate_gdnative_cffidefs.py", line 41, in generate
    ast = parse_file(gdnative_header, use_cpp=True, cpp_args=['-D__attribute__(x)=', '-I' + gdnative_include, '-I%sfake_libc_include' % BASEDIR])
  File "/Users/roman/work/godot-python/tools/pycparser/__init__.py", line 93, in parse_file
    return parser.parse(text, filename)
  File "/Users/roman/work/godot-python/tools/pycparser/c_parser.py", line 152, in parse
    debug=debuglevel)
  File "/Users/roman/work/godot-python/tools/pycparser/ply/yacc.py", line 331, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
  File "/Users/roman/work/godot-python/tools/pycparser/ply/yacc.py", line 1118, in parseopt_notrack
    p.callable(pslice)
  File "/Users/roman/work/godot-python/tools/pycparser/c_parser.py", line 566, in p_pp_directive
    self._token_coord(p, 1))
  File "/Users/roman/work/godot-python/tools/pycparser/plyparser.py", line 66, in _parse_error
    raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: /usr/include/TargetConditionals.h:95:5: Directives not supported yet
make: *** [generate_gdnative_cffidefs] Error 1

Can anyone help with this problems?

Error trying to test

Hello, im trying to test the module but i keep getting the following error:

ERROR: get_property_default_value: Cannot retrieve Python class for this script, is you code correct ?
At: modules/pythonscript/py_script.cpp:314.

What am i doing wrong?

thx

Packaged Mac build of pong example crashes on startup

I built godot-python on Mac using cypthon backend, like this:
scons platform=osx-64 backend=cpython godot_binary=/Applications/Godot.app/Contents/MacOS/Godot gdnative_parse_cpp="clang -E"

If I package the python pong example as a DMG (from the editor) and run that, it crashes on startup. It works fine when run from Godot though.

% lldb /Volumes/pypong/pypong.app/Contents/MacOS/pypong         
(lldb) target create "/Volumes/pypong/pypong.app/Contents/MacOS/pypong"
Current executable set to '/Volumes/pypong/pypong.app/Contents/MacOS/pypong' (x86_64).
(lldb) run
Process 79358 launched: '/Volumes/pypong/pypong.app/Contents/MacOS/pypong' (x86_64)
arguments
0: /Volumes/pypong/pypong.app/Contents/MacOS/pypong
Current path: /Volumes/pypong/pypong.app/Contents/Resources
2018-02-28 14:52:11.345460-0500 pypong[79358:3128294] MessageTracer: Falling back to default whitelist
OpenGL ES 3.0 Renderer: Intel Iris OpenGL Engine
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fff99a9f340 (most recent call first):
Process 79358 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff60b98e3e libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
->  0x7fff60b98e3e <+10>: jae    0x7fff60b98e48            ; <+20>
    0x7fff60b98e40 <+12>: movq   %rax, %rdi
    0x7fff60b98e43 <+15>: jmp    0x7fff60b900b8            ; cerror_nocancel
    0x7fff60b98e48 <+20>: retq   
Target 0: (pypong) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007fff60b98e3e libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff60cd7150 libsystem_pthread.dylib`pthread_kill + 333
    frame #2: 0x00007fff60af5312 libsystem_c.dylib`abort + 127
    frame #3: 0x0000000113c131b1 libpython3.6m.dylib`Py_FatalError(msg=<unavailable>) at pylifecycle.c:1466 [opt]
    frame #4: 0x0000000113c12f94 libpython3.6m.dylib`_Py_InitializeEx_Private(install_sigs=0, install_importlib=1) at pylifecycle.c:444 [opt]
    frame #5: 0x0000000113a02f7b libpythonscript.dylib`_cffi_py_initialize + 11
    frame #6: 0x0000000113a02870 libpythonscript.dylib`_cffi_carefully_make_gil + 288
    frame #7: 0x0000000113a0268d libpythonscript.dylib`_cffi_start_python + 13
    frame #8: 0x0000000113a025ff libpythonscript.dylib`_cffi_start_and_call_python + 31
    frame #9: 0x0000000113a018f2 libpythonscript.dylib`pybind_init + 50
    frame #10: 0x000000010017daec pypong`PluginScriptLanguage::init() + 12
    frame #11: 0x0000000101457e79 pypong`ScriptServer::init_languages() + 41
    frame #12: 0x0000000100027282 pypong`Main::setup2(unsigned long long) + 4594
    frame #13: 0x0000000100023dca pypong`Main::setup(char const*, int, char**, bool) + 18058
    frame #14: 0x000000010000e422 pypong`main + 626
    frame #15: 0x00007fff60a49115 libdyld.dylib`start + 1
    frame #16: 0x00007fff60a49115 libdyld.dylib`start + 1
(lldb) 

It may be relevant that my Python is python3.6, built in my home dir. That's in my path, not MacOS system python. But as I understand, godot-python is supposed to be self-contained.

Can't return string from function

I'm trying to use this wonderful code, but I can't seem to do the simplest things.

I have the following Python code:

from godot import exposed, export
from godot.bindings import TileMap
from random import choice, randint

@exposed
class Thing(TileMap):

    names = ["Mike","Bill", "James", "Robert"]

    thing1 = "Hi, I'm thing1."
    thing2 = "Hi, I'm thing2."
    some_number = 0

    def fly(self):
        print("Go fly a kite!")

    def get_name(self):
        name = choice(self.names)
        return name
    
    def do_number(self):
        self.some_number = randint(1,10)
    
    def get_number(self):
        return randint(1,10)
        
    def get_that_guy(self):
        b = "It's the man! Run!"
        return b

When I use the function which returns a number (in this case, an integer), it works fine. But when I try a string, it doesn't work. So I have this code:

extends Node2D

func _ready():
    var b = get_node("py_code")
    print("The random number chosen is %s." % b.get_number)
    print(b.get_that_guy())

It prints out "The random number is 5.", but it doesn't print "It's the man! Run!" So I am at a loss as to why my strings are not being returned from the function. FWIW, I am using Godot 3.0 alpha (very recent version) with recent Python bindings.

Optional arguments appearing as positional arguments

I don't know if I'm doing something wrong but all Godot methods that contain optional arguments are being called as if all arguments were positional.

Eg: Node.add_child( Node node, bool legible_unique_name=false )

The node argument is positional but legible_unique_name is optional.

So, calling this by passing only node argument triggers a TypeError.

Python traceback:

Traceback (most recent call last):
  File "<init code for 'pythonscriptcffi'>", line 131, in pybind_call_meth
  File "/home/williamd1k0/Downloads/godot-python-0.9.0/examples/AngryMark/SimpleTest.py", line 22, in _input
    self.add_child(grr)
  File "<init code for 'pythonscriptcffi'>", line 3409, in bind
TypeError: add_child() takes 2 positional argument but 1 were given

Also, I'm using your release v0.9.0 for Linux.

A PoolArray inside Array doesn't get sized correctly

I added this test to test_pool_arrays.py:

# Extra tests
class TestPoolVector3ArraySize:
    def test_size(self):
        a = PoolVector3Array()
        a.resize(1000)
        assert len(a) == 1000
    def test_size_in_array(self):
        a = Array()
        a.resize(9)
        a[0] = PoolVector3Array()
        a[0].resize(1000)
        assert len(a[0]) == 1000

It fails the assert, because len(a[0]) == 0, not 1000 as it should be. Is this my user error, or an actual bug?
It works fine if the PoolArray is not a member of a parent Array (see the first test).

godot-python fails to build

On Manjaro Linux, godot-python fails to build.
I've cloned the repository and tried to compile it with
scons platform=x11-64 backend=cpython release

scons` platform=x11-64 backend=cpython release
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
git clone https://github.com/python/cpython.git --depth=1 --branch=v3.6.3 --single-branch platforms/x11-64/cpython
Klone nach 'platforms/x11-64/cpython' ...
remote: Counting objects: 4426, done.
remote: Compressing objects: 100% (3898/3898), done.
remote: Total 4426 (delta 503), reused 2039 (delta 434), pack-reused 0
Empfange Objekte: 100% (4426/4426), 22.43 MiB | 3.20 MiB/s, Fertig.
Löse Unterschiede auf: 100% (503/503), Fertig.
Hinweis: Checke '2c5fed86e0cbba5a4e34792b0083128ce659909d' aus.

Sie befinden sich im Zustand eines 'losgelösten HEAD'. Sie können sich
umschauen, experimentelle Änderungen vornehmen und diese committen, und
Sie können alle möglichen Commits, die Sie in diesem Zustand machen,
ohne Auswirkungen auf irgendeinen Branch verwerfen, indem Sie einen
weiteren Checkout durchführen.

Wenn Sie einen neuen Branch erstellen möchten, um Ihre erstellten Commits
zu behalten, können Sie das (jetzt oder später) durch einen weiteren Checkout
mit der Option -b tun. Beispiel:

  git checkout -b <neuer-Branchname>

Checke Dateien aus: 100% (4176/4176), Fertig.
cd platforms/x11-64/cpython && echo Configuring CPython... && 1>/dev/null ./configure --enable-shared --prefix=/media/WDElements/Bastelordner_ext/Godot3/Godot Python/godot-python/platforms/x11-64/cpython_build && echo Building CPython... && 1>/dev/null make -j4 && echo Installing CPython in /media/WDElements/Bastelordner_ext/Godot3/Godot Python/godot-python/platforms/x11-64/cpython_build... && 1>/dev/null make install && LD_LIBRARY_PATH=/media/WDElements/Bastelordner_ext/Godot3/Godot Python/godot-python/platforms/x11-64/cpython_build/lib /media/WDElements/Bastelordner_ext/Godot3/Godot Python/godot-python/platforms/x11-64/cpython_build/bin/pip3 install cffi
Configuring CPython...
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: Python/godot-python/platforms/x11-64/cpython_build
Invalid configuration `Python/godot-python/platforms/x11-64/cpython_build': machine `Python/godot-python/platforms/x11' not recognized
configure: error: /bin/sh ./config.sub Python/godot-python/platforms/x11-64/cpython_build failed
scons: *** [platforms/x11-64/cpython_build] Error 1
scons: building terminated because of errors.

Documentation

First, thanks for a great library - I always like to model out simulations in Python and always dread having to translate that to another language.

I've tried a couple times with varying levels of success on 64-bit Linux to build the project working following the README.md and I'm not sure all the examples and tests are up to date for the latest GDNative file formats - which makes total sense since it's a moving target.

I'm thinking about taking a stab at updating the examples / README as a PR now that we're closer to 3.0 (and saw your latest PR was merged) but wanted to make sure I don't do work that's already in progress.

If you're already working on these things, no worries! And if there is anything else I can do to help, let me know.

make generate_gdnative_cffidefs fails with current master branch of godot

This project is meant for Godot 3.0, is it not? It is possible that I made a mistake, but it seems to me, that it is not up to date with Godots gdnative sourcecode.

$ make generate_gdnative_cffidefs
/home/X/code/godot-python/tools/generate_gdnative_cffidefs.py --output /home/X/code/godot-python/pythonscript/cffi_bindings/cdef.gen.h /home/X/code/godot-python/godot
cpp: error: /home/X/code/godot-python/godot/modules/gdnative/godot/gdnative.h: No such file or directory
cpp: warning: ‘-x c’ after last input file has no effect
cpp: fatal error: no input files
compilation terminated.
Traceback (most recent call last):
  File "/home/X/code/godot-python/tools/generate_gdnative_cffidefs.py", line 61, in <module>
    fd.write(generate(args.godot_root_path))
  File "/home/X/code/godot-python/tools/generate_gdnative_cffidefs.py", line 47, in generate
    first_line = next(i for i, line in enumerate(splitted_src) if 'godot' in line.lower())
StopIteration
make: *** [Makefile:117: generate_gdnative_cffidefs] Error 1
$ ls godot/modules/gdnative/
total 2.9M
4.0K config.py           20K gdnative_api_struct.gen.cpp             4.0K gd_native_library_editor.h               4.0K nativescript/                  8.0K SCsub
4.0K config.pyc         200K gdnative_api_struct.gen.x11.tools.64.o  764K gd_native_library_editor.x11.tools.64.o  4.0K pluginscript/
4.0K doc_classes/        12K gdnative.cpp                            968K gdnative.x11.tools.64.o                   12K register_types.cpp
4.0K gdnative/          8.0K gdnative.h                              4.0K include/                                 4.0K register_types.h
132K gdnative_api.json  8.0K gd_native_library_editor.cpp            4.0K nativearvr/                              708K register_types.x11.tools.64.o

As you see, the 'godot' subfolder inside 'gdnative' does not exist.

RealBinder can only be used with floats

After adding Vector3 and GETSET functions for properties (x, y, z) I discovered that if I do:

a = Vector3()
a.x = 10 # this fails
a.x = 10. # this works

This most likely happens for all functions that expect float as a parameter, but are called with int.

Suggestion: Do a windows build available

Linux is a wonderfull system, but, by the fact, most godot users (me include) have windows in their computers. If is needed some testing in godot-python binding, maybe there will be a compilation for windows available in the main page of Godot. I know that 90% of godot dev´s have linux, but 90% of godot users have windows (Percentages invented with a reliability of 90%)

Can't run test or example after building from source on Windows

I'm sure this is just a newbie problem, but I built the godot engine from source, then built godot-python from source (both latest github master) per the instructions. I'm on Win10, VS2017, python36. When I try test or example I get this error:

c:\dss\Product\GodotEngine\godot-python>scons.bat platform=windows-64 backend=cpython godot_binary=../godot/bin/godot.windows.opt.tools.64.exe test
scons: Reading SConscript files ...

scons: warning: MSVC_USE_SCRIPT set to False, assuming environment set correctly.
File "C:\dss\Product\GodotEngine\godot-python\SConstruct", line 52, in <module>
scons: done reading SConscript files.
scons: Building targets ...
SymLink(["build\main"], ["build\windows-64-cpython"])
C:\dss\Product\GodotEngine\godot\bin\godot.windows.opt.tools.64.exe --path tests/bindings
OpenGL ES 3.0 Renderer: GeForce GTX 970/PCIe/SSE2
ERROR: Can't open dynamic library: C:/dss/Product/GodotEngine/godot-python/tests/bindings/pythonscript/pythonscript.dll. Error: Error 126: The specified module could not be found.

   At: platform\windows\os_windows.cpp:1697
ERROR: No loader found for resource: res://main.py
   At: core\io\resource_loader.cpp:186
ERROR: ResourceInteractiveLoaderText::poll: res://main.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://main.py
   At: scene\resources\scene_format_text.cpp:439
ERROR: ResourceFormatLoader::load: Condition ' err != OK ' is true. returned: RES()
   At: core\io\resource_loader.cpp:149
ERROR: Failed loading resource: res://main.tscn
   At: core\io\resource_loader.cpp:186
ERROR: Failed loading scene: res://main.tscn
   At: main\main.cpp:1659
WARNING: ObjectDB::cleanup: ObjectDB Instances still exist!
     At: core\object.cpp:1989
scons: done building targets.

It's right, there is no such file tests/bindings/pythonscript/pythonscript.dll although it did build it.

[c:/dss/Product/GodotEngine/godot-python] % find . -name pythonscript.dll
./build/windows-64-cpython/pythonscript/pythonscript.dll
./pythonscript/pythonscript.dll

Any hints?
Also is it better to bring this kind of issue to IRC? Happy to do that.

Provide a python WHL for godot ?

It would be great if godot-python could be installed with pip - this would be the most accessible way for python devs to gt godot.

Similar to Panda3D, this would need the build process to adds the godot libraries + any third party libs into the WHL.

pypy version closes editor on run

When a scene is played with pypy as GDNative Library it closes the editor although the scene runs and works correctly,

It does not happen when CPython is used.

Tested on Linux amd64, with both Godot master and Godot beta.

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.