Troubles with TiledMap

Skip to first unread message

Bastien Sevajol

Dec 6, 2017, 3:58:30 PM12/6/17
to cocos2d discuss

I have a stange problem with TiledMap. Following this steps:
  1. Linux, Ubuntu: 4.10.0-40-generic with python3.5 installed
  2. Clone example script: git clone
  3. Go into it: cd cocos2d_tiledmap_demo
  4. Create a virtual env: virtualenv --no-site-packages -p /usr/bin/python3.5 venv3.5
  5. Source it: source venv3.5/bin/activate
  6. Install cocos2d: pip install cocos2d
  7. Start script: python

I got a black screen (see with_fresh_install.png in attached files). But if i source an old virtual env (same python version) of previous cocos2d test, map is correctly loaded (see with_old_venv.png). I can found little versions differences between fresh and old venv:

(venv3.5)  cocos2d_tiledmap_demo git:(master) source /home/bux/Projets/cocos/venv3.5/bin/activate
(venv3.5)  cocos2d_tiledmap_demo git:(master) pip freeze
(venv3.5)  cocos2d_tiledmap_demo git:(master) source venv3.5/bin/activate
(venv3.5)  cocos2d_tiledmap_demo git:(master) pip freeze

But if i pip install same versions, same black screen. So i d'ont think version differences is responsible. What can be the reason of error ? Where can i debug cocos (pyglet ?) source code to maybe found info about that ?


Bastien Sevajol

Dec 6, 2017, 4:00:03 PM12/6/17
to cocos2d discuss
I forgot to add attached files. There are in this mail.

claudio canepa

Dec 6, 2017, 4:39:50 PM12/6/17
to cocos2d discuss
Hi Bastien.

Could you verify which pyglet you have in each venv?
In theory you could start the python in the virtualenv and then do
  import pyglet

That should give some approximate version.
I'm not sure sure if pyglet really updated the declared version for each alpha, if no difference in the declared version we can investigate later.

Also posibilities;
  - pyglet has an optional dependency on Pillow; it is present in one of the venvs ?
  - last pyglet versions did some magic to import the module 'future' (not the built in future; a package available on pip; could it be different 'future' versions ?


You received this message because you are subscribed to the Google Groups "cocos2d discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To post to this group, send email to
Visit this group at
For more options, visit

claudio canepa

Dec 6, 2017, 4:48:50 PM12/6/17
to cocos2d discuss
Sorry, I missed you included the pyglet versions. 1.3.0b1 and 1.3.0

Could you try this:

 - create new venv
 - pip install the dependencies first, asking for the specific versions in the 'known good' install
 - pip install cocos
 - verify installed versions are as expected
 - try the program to see if behaves well.

if it does well, pip unistall pyglet and do a pip install pyglet without version; that should give last pyglet.
Try the program to see if runs well or not.


Bastien Sevajol

Dec 6, 2017, 5:10:31 PM12/6/17
to cocos2d discuss
Hello, following this steps:

 cocos2d_tiledmap_demo git:(master) virtualenv --no-site-packages -p /usr/bin/python3.5 venv3.5
Running virtualenv with interpreter /usr/bin/python3.5
Using base prefix '/usr'
New python executable in /tmp/cocos2d_tiledmap_demo/venv3.5/bin/python3.5
Also creating executable in /tmp/cocos2d_tiledmap_demo/venv3.5/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

 cocos2d_tiledmap_demo git:(master) source venv3.5/bin/activate
(venv3.5)  cocos2d_tiledmap_demo git:(master) pip install pyglet==1.3.0b1
Collecting pyglet==1.3.0b1
Using cached pyglet-1.3.0b1-py2.py3-none-any.whl
Collecting future (from pyglet==1.3.0b1)
Installing collected packages: future, pyglet
Successfully installed future-0.16.0 pyglet-1.3.0b1
(venv3.5)  cocos2d_tiledmap_demo git:(master) pip install six==1.10.0
Collecting six==1.10.0
Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six-1.10.0
(venv3.5)  cocos2d_tiledmap_demo git:(master) pip install cocos2d
Collecting cocos2d
Requirement already satisfied: six>=1.4 in ./venv3.5/lib/python3.5/site-packages (from cocos2d)
Requirement already satisfied: pyglet>=1.2 in ./venv3.5/lib/python3.5/site-packages (from cocos2d)
Requirement already satisfied: future in ./venv3.5/lib/python3.5/site-packages (from pyglet>=1.2->cocos2d)
Installing collected packages: cocos2d
Successfully installed cocos2d-0.6.5

(venv3.5)  cocos2d_tiledmap_demo git:(master) pip freeze

(venv3.5)  cocos2d_tiledmap_demo git:(master) python -c "import pyglet; print(pyglet.version)"
(venv3.5)  cocos2d_tiledmap_demo git:(master) python

Still black screen (note pyglet 1.3.0b1 was keep: "Requirement already satisfied: pyglet>=1.2 in ./venv3.5/lib/python3.5/site-packages (from cocos2d)").
To unsubscribe from this group and stop receiving emails from it, send an email to

claudio canepa

Dec 6, 2017, 9:40:13 PM12/6/17
to cocos2d discuss
>Still black screen (note pyglet 1.3.0b1 was keep: "Requirement already satisfied: pyglet>=1.2 in ./venv3.5/lib/python3.5/site-packages (from cocos2d)").

Lets do in a manual fashion so we get the exact version.

- create a dir to hold all needed, say /home/bux/testcocos
- move to that dir,
      cd /home/bux/testcocos

- create a fresh virtualenv with the line
       python3 -m venv myenv
  It will have no package installed, it should have created the dir /home/bux/testcocos/myenv

- activate it
      source myenv/bin/activate

- Now we should be in the venv console; In ubuntu 17.10 'python' in the venv console refers to the python in the venv, which is py3.5 for you.

- Add six with
     python -m pip install six

- Add future
    python -m pip install future
- clone pyglet
This should have created the directory /home/bux/testcocos/pyglet with the clone; it will be at the last version in the default branch.
Later the version will be adjusted.

- clone cocos
  will clone the repo to the dir cocos, it should have created the dir /home/bux/testcocos/cocos

- Say the python in the venv where to find cocos and pyglet
      - create a file /home/bux/testcocos/myenv//lib/python3.5/site-packages/py35_cocos_pyglet.pth
      - edit the file adding the lines (with zero indentation)
     - save the file

Now the python in the venv should see both pyglet and cocos

- Adjust the pyglet version
  First move to the pyglet dir
      cd /home/bux/testcocos/pyglet
pyglet versions are tagged in the repository, and to see the tags
     hg tags
(will list all the tags, by example pyglet-1.4.0a1 ,  pyglet-1.3.0 , pyglet-1.3.0rc2, pyglet-1.3.0rc1 ...)
To change to a specific version we need to do an  hg update <tag>.
Note you should not move to tags 1.2.x or below, those pyglet versions can't run directly on py3

- Lets set the "good" version; I understand from your first post it is 1.3.0b1
  Umm. No tag with the exact string. Lets try tag pyglet-1.3.0rc2
       hg update pyglet-1.3.0rc2

- Adjust the cocos version. For pyglet 1.3.xxxxxx you will need at least 0.6.5
     cd /home/bux/testcocos/cocos
 list the tags with
   git tags -l
 Lets try 0.6.5 ; it has the tag release-0.6.5
   git checkout release-0.6.5

- Okay, now run your test from the venv
     python ....

- if it runs bad, go to a prior pyglet tag and test again (don't go to tags 1.2.x)
- if it runs ok, advance to the next tag in pyglet and test again
- also test with the newer pyglet tag, currently pyglet-1.4.0a1

This should tell which pyglet version, if any, has problems.


To unsubscribe from this group and stop receiving emails from it, send an email to

Bastien Sevajol

Dec 7, 2017, 3:18:35 AM12/7/17
to cocos2d discuss

(Note: i'm testing on second computer, Debian 8, 3.16.0-4-amd64, python 3.5 too: same black screen)
I followed your steps. After venv created, pyglet and cocos cloned, and .pth file created. pyglet tag availables:

tip                             3930:d401d45e0d0d
pyglet-1.4.0a1                  3910:e7ab9d8d8ea3
pyglet-1.3.0                    3781:64acbbeafb8f
pyglet-1.3.0rc2                 3772:5d692ab5986e
pyglet-1.3.0rc1                 3748:14afb5a0054d
pyglet-1.2.4                    3292:10f07039613b
pyglet-1.2.3                    3222:92cd120b6cb9
pyglet-1.2.2                    3073:12bb2e852335
pyglet-1.2.0                    2990:b5a21da8dbba
pyglet-1.2.0rc3                 2978:b36873813f83
release-1.2rc1                  2949:5194a6b8be4f
release-1.2alpha1               2721:5df7a60a32bb
last_pyobjc_version             2670:7ed1b86b049f
pyglet-1.1.4                    2264:dff26a5c440e
pyglet-1.1.4-rc1                2258:bd0bf56e2101
pyglet-1.1.3                    2182:0e88949deaba
pyglet-1.1.2                    2160:59cb56b04ee4
pyglet-1.1.1                    2118:97ed8929975e
pyglet-1.1                      2084:2db88439ccb3
pyglet-1.1beta2                 2036:cb3e6f1ed68c
pyglet-1.1beta1                 1959:ce8a50069a13
pyglet-1.1alpha2                1909:21fb7f6ce977
pyglet-1.1alpha1                1795:e22423cd9c4a
pyglet-1.0                      1544:b5ed21968f06
pyglet-1.0beta3                 1452:b30bbb44efa6
pyglet-1.0beta2                 1364:c7eac959dc0c
pyglet-1.0beta1                 1337:084e5d57609d
pyglet-1.0alpha2                1143:f2b5c7e11d7f
pyglet-1.0alpha1                 937:727c422fcc95

With pyglet on tag pyglet-1.3.0rc2 and cocos on tag release-0.6.5: black screen. Same black screen with pyglet-1.3.0rc1, pyglet-1.3.0 and pyglet-1.4.0a1. Tested with cocos on release-0.6.4, same black screen.

I will test again on thirst computer tonight (ubuntu) but i guess the result will be the same. Note, tested with python 2.7: same black screen.

I can make more deep tests if needed !

Bastien Sevajol

Dec 7, 2017, 3:06:05 PM12/7/17
to cocos2d discuss
Additional notes: Add a sprite is totally working, with this code:

from cocos.director import director
from cocos.tiles import load
from cocos.layer import ScrollingManager
from cocos.layer import pyglet
from cocos.scene import Scene
from cocos.sprite import Sprite

= load("demo.tmx")["mytiles"]
= Sprite('eyes.png')
= ScrollingManager()
= Scene()

The eye.png sprite is visible in both venvs.

Bastien Sevajol

Dec 7, 2017, 3:50:59 PM12/7/17
to cocos2d discuss
I found what is the problem ! Actually, i found why my old venv is working and why cocos2d official code is not ! I totally forgot this pull request: , my old venv is based on this code XD
In my example code, tileset have a different tile width/height than the tmx map, and cocostiles#load_tmx don't be careful with that.

I don't know if you are able to accept pull requests of pull request but maybe you can look at it ^^
Reply all
Reply to author
0 new messages