Page 2 of 4

Re: Yorg

PostPosted: 12 Aug 2017, 18:17
by flavio
Hi! We're working on the new release: I've applied your suggestions (thank you once more), I've programmed weapons and power-ups and the artists has modelled a new track! Moreover, I've added some options that should improve performances on older systems. There's still some work to do for completing this release, but we're approaching that. Other info on our last post. Here's a screenshot of the new track. Thanks!
Image

Re: Yorg

PostPosted: 14 Aug 2017, 01:02
by charlie
Wow, looking really nice. Keep up the good work. The jump looks like a fun part of the track, love the speed warnings!

Re: Yorg

PostPosted: 16 Aug 2017, 09:22
by flavio
Thank you very much, charlie! :D

Re: Yorg

PostPosted: 21 Aug 2017, 19:57
by Imerion
Looks awesome! Great to see you keep doing nice things with this!

Re: Yorg

PostPosted: 22 Aug 2017, 06:52
by flavio
Thank you so much! :oops: :)

Re: Yorg

PostPosted: 30 Aug 2017, 11:00
by nanoriver
Looks really nice, keep it up :)

Re: Yorg

PostPosted: 31 Aug 2017, 18:30
by flavio
Thank you! :) Sure, we're working hard on the next release!

Re: Yorg

PostPosted: 04 Sep 2017, 18:09
by flavio
(Hi, I hope that this post doesn't violate any community's rule, please remove it if this is the case, thanks!)

Hi! We're close to the release of the new version (we've added a track, a car and weapons), and we're testing it before releasing. We don't have a lot of computers to test on, so we would be very happy if there were someone who is curious and wants to test the release candidate, reporting any critical bug. This would imply a better testing coverage for the upcoming release. The release candidate is downloadable from here - NB the release candidate is the stable build for your operating system. Thank you very much! :)

Re: Yorg

PostPosted: 05 Sep 2017, 12:33
by farrer
Tested the stable here, linux 64 bits version. Seems a lot more polished than the last time I checked it (after your first post here), congratulations on that!

The game look improved a lot, with the downside of being more heavier, obviously. My machine suffered a bit to run it, but its runnable and I've tested it on my notebook which is a bit old now, with its Geforce 630M GT, so don't worry about its performance, as it is expected to be medium/low anyway.

The physics, from what I remember, seems to be improved too, which is great. I'm no more stuck on some places.

Lastly, I've got a double free segfault on exit (I've exit with clicking on the window 'x', after exiting a race on the middle, if it helps):

{l Code}: {l Select All Code}
*** Error in `/home/farrer/yorg/lib/panda3d/cmu_1.9/linux_amd64/p3dpython': free(): invalid pointer: 0x00000000029fded4 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x6fbcb)[0x7fc2203b3bcb]
/lib64/libc.so.6(+0x75456)[0x7fc2203b9456]
/lib64/libc.so.6(+0x75c4e)[0x7fc2203b9c4e]
/usr/lib64/libasound.so.2(snd_config_delete+0x6e)[0x7fc20e70d12e]
/usr/lib64/libasound.so.2(snd_config_delete+0x40)[0x7fc20e70d100]
/usr/lib64/libasound.so.2(snd_config_delete+0x40)[0x7fc20e70d100]
/usr/lib64/libasound.so.2(snd_config_update_free_global+0x34)[0x7fc20e70de94]
/usr/lib64/libportaudio.so.2(+0x66ac)[0x7fc20e4bd6ac]
/usr/lib64/libportaudio.so.2(Pa_Terminate+0x42)[0x7fc20e4be752]
/home/farrer/yorg/lib/openal/cmu_1.9/linux_amd64/libopenal.so.1(+0x3e494)[0x7fc20ea2c494]
/home/farrer/yorg/lib/openal/cmu_1.9/linux_amd64/libopenal.so.1(+0x6cf6)[0x7fc20e9f4cf6]
/lib64/ld-linux-x86-64.so.2(+0xfb37)[0x7fc2223f4b37]
/lib64/libc.so.6(+0x35af8)[0x7fc220379af8]
/lib64/libc.so.6(+0x35b45)[0x7fc220379b45]
/lib64/libc.so.6(__libc_start_main+0xf7)[0x7fc220364647]
/home/farrer/yorg/lib/panda3d/cmu_1.9/linux_amd64/p3dpython[0x406929]


But it is just a minor issue, and probably easily fixable.

Again, the game is very polished and improved a lot from the first time I've tried it. Good job!

Re: Yorg

PostPosted: 06 Sep 2017, 21:24
by flavio
farrer {l Wrote}:Tested the stable here, linux 64 bits version. Seems a lot more polished than the last time I checked it (after your first post here), congratulations on that!
...
Again, the game is very polished and improved a lot from the first time I've tried it. Good job!


Thank you very much! This encourages us a lot! :)

farrer {l Wrote}:The game look improved a lot, with the downside of being more heavier, obviously. My machine suffered a bit to run it, but its runnable and I've tested it on my notebook which is a bit old now, with its Geforce 630M GT, so don't worry about its performance, as it is expected to be medium/low anyway.


Actually, I've added two options for addressing this issue (they are in the Options menu): (i) you may disable shaders (this should help if you are GPU-bound); (ii) you can reduce the number of the cars (this should help if you are CPU-bound).

Anyway, I've planned to do some experiments on the AI in the future, I hope to improve performances in that area (which is pretty heavy now). I may do a less precise AI (it may not be noticeable) and save some CPU time.

farrer {l Wrote}:Lastly, I've got a double free segfault on exit (I've exit with clicking on the window 'x', after exiting a race on the middle, if it helps):

{l Code}: {l Select All Code}
*** Error in `/home/farrer/yorg/lib/panda3d/cmu_1.9/linux_amd64/p3dpython': free(): invalid pointer: 0x00000000029fded4 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x6fbcb)[0x7fc2203b3bcb]
/lib64/libc.so.6(+0x75456)[0x7fc2203b9456]
/lib64/libc.so.6(+0x75c4e)[0x7fc2203b9c4e]
/usr/lib64/libasound.so.2(snd_config_delete+0x6e)[0x7fc20e70d12e]
/usr/lib64/libasound.so.2(snd_config_delete+0x40)[0x7fc20e70d100]
/usr/lib64/libasound.so.2(snd_config_delete+0x40)[0x7fc20e70d100]
/usr/lib64/libasound.so.2(snd_config_update_free_global+0x34)[0x7fc20e70de94]
/usr/lib64/libportaudio.so.2(+0x66ac)[0x7fc20e4bd6ac]
/usr/lib64/libportaudio.so.2(Pa_Terminate+0x42)[0x7fc20e4be752]
/home/farrer/yorg/lib/openal/cmu_1.9/linux_amd64/libopenal.so.1(+0x3e494)[0x7fc20ea2c494]
/home/farrer/yorg/lib/openal/cmu_1.9/linux_amd64/libopenal.so.1(+0x6cf6)[0x7fc20e9f4cf6]
/lib64/ld-linux-x86-64.so.2(+0xfb37)[0x7fc2223f4b37]
/lib64/libc.so.6(+0x35af8)[0x7fc220379af8]
/lib64/libc.so.6(+0x35b45)[0x7fc220379b45]
/lib64/libc.so.6(__libc_start_main+0xf7)[0x7fc220364647]
/home/farrer/yorg/lib/panda3d/cmu_1.9/linux_amd64/p3dpython[0x406929]


But it is just a minor issue, and probably easily fixable.


Unfortunately, I can't replicate the issue (I've tried your interaction but it works correctly). I've reported that to Panda3D's developers, thanks. :) Anyway, they are developing a brand new deployment subsystem that should be released with Panda3D 1.10 (and I am going to use it), so it should be solved (hopefully) when they will release it.

Thank you very much for testing! :)

Re: Yorg

PostPosted: 09 Sep 2017, 11:33
by flavio
Hi! We've just released version 0.7!

As reported in our post, there are several updates:
  • one new car: Iperion;
  • a new track: Countryside track;
  • weapons and power-ups;
  • small bugfixes and general improvements.

Image

Here is release's trailer:
Image

A lot of thanks to people in this forum who are helping us with suggestions, tests, support and encouragments! Thank you!

Re: Yorg

PostPosted: 09 Sep 2017, 16:03
by Julius
Works quite nicely under Linux.

Quick feedback:

The roads really need textures that follow the tracks, i.e. that show this racing track has been used by cars for racing previously and that kind of show the player a good pathway to drive.

The game needs particles, especially for crashes. Can be a bit over the top ;) Use also for some mild dust effect behind the cars. AND especially for the new weapons ;)

The engine sound is too monotone. When starting your should be able to roar the engine a bit for fun and then it needs to have some modulation for different gears/speeds.

The steering feels a bit stiff (when using a keyboard). I guess this is to make it a bit easier, but it could be a bit more reactive and allow for tighter curves. Maybe a handbrake for drifting would be cool (but that needs to "feel tight" otherwise it is useless ;) ).

When a car goes out of control it feels very sudden and like all steering is turned off completely. This is fine for total "rolling" crashes, but there should be probably some gradient in which the player still feels like he/she can safe the car from crashing or at least have some kind of steering feedback / air control. This would probably make the game much more fun as you can have funny almost safes or real "wtf how did I rescued that" moments.

Last but not least: stylisticly this would probably work better with tiny monster trucks. I guess you are tying to not copy existing commercial games too much, but I would still go for it regardless as it will make the game look much better.

Re: Yorg

PostPosted: 10 Sep 2017, 00:17
by charlie
I think the issue with the steering is the way it is implemented; holding left/right causes the steering wheel to turn - so it takes a second or so for the wheels to fully turn hence you end up losing control because you were only wanting a partial turn. It's a bit unintuitive because #1 it is hard to discren how 'turned' the wheels are (they are small and we're not looking at e.g. a steering wheel).

Re: Yorg

PostPosted: 11 Sep 2017, 07:48
by flavio
Hi! Thank you very much for your accurate feedbacks!

Julius {l Wrote}:The roads really need textures that follow the tracks, i.e. that show this racing track has been used by cars for racing previously and that kind of show the player a good pathway to drive.


You are right, but we need to understand how we could do that: we use a giant texture for the (single) road mesh, and if we draw skidmarks on it then it would be rendered very blurry. We're looking for a solution. If someone has suggestions, they are welcome! :)

Julius {l Wrote}:The game needs particles, especially for crashes. Can be a bit over the top ;) Use also for some mild dust effect behind the cars. AND especially for the new weapons ;)


Actually, I inserted them into the previous version, but, during our tests, there were hiccups when I instanced them. I tried to preload them, pre-render them, but I couldn't remove those hiccups. So, I've planned to program another implementation of particle effects, I wish I can create some decent ones. :)

Julius {l Wrote}:The engine sound is too monotone. When starting your should be able to roar the engine a bit for fun and then it needs to have some modulation for different gears/speeds.


Thanks, I've added it to the roadmap!

Julius {l Wrote}:The steering feels a bit stiff (when using a keyboard). I guess this is to make it a bit easier, but it could be a bit more reactive and allow for tighter curves. Maybe a handbrake for drifting would be cool (but that needs to "feel tight" otherwise it is useless ;) ).

When a car goes out of control it feels very sudden and like all steering is turned off completely. This is fine for total "rolling" crashes, but there should be probably some gradient in which the player still feels like he/she can safe the car from crashing or at least have some kind of steering feedback / air control. This would probably make the game much more fun as you can have funny almost safes or real "wtf how did I rescued that" moments.


charlie {l Wrote}:I think the issue with the steering is the way it is implemented; holding left/right causes the steering wheel to turn - so it takes a second or so for the wheels to fully turn hence you end up losing control because you were only wanting a partial turn. It's a bit unintuitive because #1 it is hard to discren how 'turned' the wheels are (they are small and we're not looking at e.g. a steering wheel).


Thank you very much, these hints are *very* precious. Actually, balancing these parameters is the hardest part to me. I've planned to (try to) improve this area in the near future. ;)

Julius {l Wrote}:Last but not least: stylisticly this would probably work better with tiny monster trucks. I guess you are tying to not copy existing commercial games too much, but I would still go for it regardless as it will make the game look much better.


I've forwarded your feedback to the modeler, we like your idea very much, we're discussing about it!

Re: Yorg

PostPosted: 11 Sep 2017, 14:23
by Julius
flavio {l Wrote}:Hi! Thank you very much for your accurate feedbacks!

Julius {l Wrote}:The roads really need textures that follow the tracks, i.e. that show this racing track has been used by cars for racing previously and that kind of show the player a good pathway to drive.


You are right, but we need to understand how we could do that: we use a giant texture for the (single) road mesh, and if we draw skidmarks on it then it would be rendered very blurry. We're looking for a solution. If someone has suggestions, they are welcome! :)


True, not so easy to do. Although I wasn't talking about skidmarks but textures that follow the road, see something like this: http://ftp.cqfd-corp.org/raycap2006-09-17-145421-00.jpg
I think the common way is to have a seperate road mesh with a tiling textures on it... something like this:
https://youtu.be/0HkOCMGbzr4
(although it could blend some different tiling textures for different parts of the track and add some decals to avoid it looking too repetitive)

Re: Yorg

PostPosted: 12 Sep 2017, 17:53
by flavio
Oh, thank you very much, now I see what you meant. Unfortunately, it would imply to remake the entire road's mesh (we don't know an alternative way to do it otherwise :( ), so we don't know when we can do this exactly. But we've collected the feedback, so we'll do this sooner or later, thanks!

Re: Yorg

PostPosted: 11 Oct 2017, 22:14
by flavio
Hi! As we wrote in our last post, we're working on next release. We've a couple of images of the new track.

Image

Image

Moreover, on the programming side, I am implementing several suggestions you gave me: thank you once more! :)

Re: Yorg

PostPosted: 12 Oct 2017, 13:03
by Princessbig
Looks very nice. Keep good work

Re: Yorg

PostPosted: 21 Oct 2017, 16:31
by flavio
Princessbig {l Wrote}:Looks very nice. Keep good work


Thank you very much! :)

--

Our artist has published a video of his last track... If you want to see what we are developing... :)

Image

Re: Yorg

PostPosted: 23 Oct 2017, 00:45
by Wuzzy
I can't build this on my Arch Linux box.
I recursively cloned the repo, typed in “scons images=1 lang=1 tracks=1” as instructed in the README file, and this is what I get:
{l Code}: {l Select All Code}
scons: Reading SConscript files ...
TypeError: sequence item 0: expected str instance, bytes found:
  File "/home/wuzzy/src/yorg/SConstruct", line 2:
    from yyagl.build.build import extensions, files, img_tgt_names, \
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 97:
    branch = branch2ver[__branch()] if __branch() in branch2ver else __branch()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 21:
    return exec_cmd('git symbolic-ref HEAD').split('/')[-1].strip()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 17:
    return '\n'.join(ret)


I got both Python 2 and Python 3.

Re: Yorg

PostPosted: 23 Oct 2017, 17:54
by flavio
Hi Wuzzy! Unfortunately, I can't replicate the issue (I've also installed a VM for that, but without success). Does it mind you if I ask more info?

It looks like the method that I am using here, Popen.communicate, has a different behaviour in Python 3 w.r.t. Python 2. An answer here would suggest to modify this to:

{l Code}: {l Select All Code}
ret = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True).communicate().decode('ascii')


Does it work if you change that line?

I am very sorry, but currently only Python 2 is supported. :( This is because Panda3D's deployment tools support only Python 2 now, and I am using them for deploying the application. Of course, I have planned to support Python 3 as soon as they support deployment with Python 3 (which is planned for their next release).

What's strange is that you said that you tried with Python 2, that is expected to work. :(

Please let me know if you can try the mentioned modification and if it works. Thank you very much! :)

Re: Yorg

PostPosted: 24 Oct 2017, 21:12
by Wuzzy
Above change was useless.
{l Code}: {l Select All Code}
AttributeError: 'tuple' object has no attribute 'decode':
  File "/home/wuzzy/src/yorg/SConstruct", line 2:
    from yyagl.build.build import extensions, files, img_tgt_names, \
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 97:
    branch = branch2ver[__branch()] if __branch() in branch2ver else __branch()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 21:
    return exec_cmd('git symbolic-ref HEAD').split('/')[-1].strip()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 16:
    ret = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True).communicate().decode('ascii')


I already said I have both Python versions installed. They are under /usr/bin/python2 and /usr/bin/python3.
/usr/bin/python is a symlink to /usr/bin/python3. After I changed it to /usr/bin/python2, I came further. Well, this is annoying. xD

I think the problem in your build routines is that it doesn't try to force Python 2 when both Python versions are detected. I don't want to change my symlink whenever I want to use or build a Python 2 application. ;-)



Well, I can't say much else, I still can't build Yorg but this is my fault because I can't build the NVIDIA texture utils. But this is a different story …

I may come back here when I finally built Yorg.

Re: Yorg

PostPosted: 25 Oct 2017, 02:20
by c_xong
You shouldn't need to update symlinks to switch python versions. Standard procedure is to set up a virtualenv with a specific python version.

Re: Yorg

PostPosted: 25 Oct 2017, 18:20
by flavio
Wuzzy {l Wrote}:Above change was useless.
{l Code}: {l Select All Code}
AttributeError: 'tuple' object has no attribute 'decode':
  File "/home/wuzzy/src/yorg/SConstruct", line 2:
    from yyagl.build.build import extensions, files, img_tgt_names, \
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 97:
    branch = branch2ver[__branch()] if __branch() in branch2ver else __branch()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 21:
    return exec_cmd('git symbolic-ref HEAD').split('/')[-1].strip()
  File "/home/wuzzy/src/yorg/yyagl/build/build.py", line 16:
    ret = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True).communicate().decode('ascii')


Whoops, I am sorry, that modification was wrong, communicate returns a tuple. Anyway, it is not needed, as I write later.

Wuzzy {l Wrote}:I already said I have both Python versions installed. [...] I don't want to change my symlink whenever I want to use or build a Python 2 application. ;-)

c_xong {l Wrote}:You shouldn't need to update symlinks to switch python versions. Standard procedure is to set up a virtualenv with a specific python version.


As c_xong said, the best practice is to use virtualenv. I've written a small guide about that, this wouldn't pollute your system, and it should work.

Wuzzy {l Wrote}:Well, I can't say much else, I still can't build Yorg but this is my fault because I can't build the NVIDIA texture utils. But this is a different story …

Actually, Nvidia's texture tools is an "uncomfortable" dependency. I've removed it, so now you shouldn't need that. :)

Re: Yorg

PostPosted: 27 Oct 2017, 00:01
by Wuzzy
Okay, the scons building process works now and I built Yorg. But for some weird reason it permanently steals the focus of my windows while it is building. This is terribly annoying and makes my computer more or less useless until the building process ends.

Anyway, now I can at least start Yorg and click around in the main menu and stuff, but when I start the first single race, I only come to the loading screen, but it crashes after a few seconds. I don't get to see the actual race track.

Here's the final lines of my console:
{l Code}: {l Select All Code}
loaded model: Townhall.egg (0.0 seconds)
:loader(error): Couldn't load file rome/LogoJugandoenlinux.bam: not found on model path (currently: "/home/wuzzy/src/yorg/yyagl/build:/usr/share/panda3d:/usr/share/panda3d/models:assets/models/tracks/")
Traceback (most recent call last):
  File "yyagl/build/process_track.py", line 178, in <module>
    TrackProcesser()
  File "yyagl/build/process_track.py", line 79, in __init__
    self.__set_submodels()
  File "yyagl/build/process_track.py", line 101, in __set_submodels
    self.__load_empties()
  File "yyagl/build/process_track.py", line 109, in __load_empties
    self.__preload_models(list(set(list(names))), load_models)
  File "yyagl/build/process_track.py", line 125, in __preload_models
    self.__preload_models(models, callback, model, curr_t)
  File "yyagl/build/process_track.py", line 124, in __preload_models
    model = loader.loadModel(fpath)
  File "/usr/share/panda3d/direct/showbase/Loader.py", line 170, in loadModel
    raise IOError, message
IOError: Could not load model file(s): ['rome/LogoJugandoenlinux']
:ya2: 00:46:09 loading assets/models/tracks/rome/track_all.bam
:loader(error): Couldn't load file assets/models/tracks/rome/track_all.bam: not found on model path (currently: "/home/wuzzy/src/yorg:/usr/share/panda3d:/usr/share/panda3d/models:assets/models")
Traceback (most recent call last):
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 52, in eventLoopTask
    self.doEvents()
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 46, in doEvents
    processFunc(self.eventQueue.dequeueEvent())
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 103, in processEvent
    messenger.send(eventName, paramList)
  File "/usr/share/panda3d/direct/showbase/Messenger.py", line 327, in send
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
  File "/usr/share/panda3d/direct/showbase/Messenger.py", line 412, in __dispatch
    method (*(extraArgs + sentArgs))
  File "/usr/share/panda3d/direct/showbase/Loader.py", line 950, in __gotAsyncObject
    cb.gotObject(i, object)
  File "/usr/share/panda3d/direct/showbase/Loader.py", line 42, in gotObject
    self.callback(*(self.objects + self.extraArgs))
  File "/home/wuzzy/src/yorg/yyagl/library/panda/gfx.py", line 26, in _intermediate_cb
    return self.callbacks[fpath](PandaNode(model))
  File "/home/wuzzy/src/yorg/yyagl/library/panda/gfx.py", line 62, in __init__
    self.node.set_python_tag('pandanode', self)
AttributeError: 'NoneType' object has no attribute 'set_python_tag'
:task(error): Exception occurred in PythonTask eventManager
Traceback (most recent call last):
  File "main.py", line 30, in <module>
    Yorg().run()
  File "/home/wuzzy/src/yorg/yyagl/game.py", line 37, in run
    base.run()
  File "/usr/share/panda3d/direct/showbase/ShowBase.py", line 2999, in run
    self.taskMgr.run()
  File "/usr/share/panda3d/direct/task/Task.py", line 513, in run
    self.step()
  File "/usr/share/panda3d/direct/task/Task.py", line 470, in step
    self.mgr.poll()
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 52, in eventLoopTask
    self.doEvents()
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 46, in doEvents
    processFunc(self.eventQueue.dequeueEvent())
  File "/usr/share/panda3d/direct/showbase/EventManager.py", line 103, in processEvent
    messenger.send(eventName, paramList)
  File "/usr/share/panda3d/direct/showbase/Messenger.py", line 327, in send
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
  File "/usr/share/panda3d/direct/showbase/Messenger.py", line 412, in __dispatch
    method (*(extraArgs + sentArgs))
  File "/usr/share/panda3d/direct/showbase/Loader.py", line 950, in __gotAsyncObject
    cb.gotObject(i, object)
  File "/usr/share/panda3d/direct/showbase/Loader.py", line 42, in gotObject
    self.callback(*(self.objects + self.extraArgs))
  File "/home/wuzzy/src/yorg/yyagl/library/panda/gfx.py", line 26, in _intermediate_cb
    return self.callbacks[fpath](PandaNode(model))
  File "/home/wuzzy/src/yorg/yyagl/library/panda/gfx.py", line 62, in __init__
    self.node.set_python_tag('pandanode', self)
AttributeError: 'NoneType' object has no attribute 'set_python_tag'


Tested on: 6d4c9b496bdca9ce5af89a9a3aa75d1f53b307fc


PS: You seem to use the “NB” awfully lot. I think this abbreviation is quite obscure, at least in English. Better remove it or find something better to avoid confusion.

PPS: I attached a German translation for your game, feel free to include it under any license. Warning: This translation is untested (for obvious reasons), so I will probably submit a 2nd version when everything works for me.