|
|
|
Return to Showcase
by et1337 » Fri Dec 04, 2009 11:29 am
[edit] Name change: formerly known as Stainless.
Current version v0.5a is available to play on the shiny new website!
Thanks to the efforts of drwr and rdb documented in this thread, you can also play the game using the awesome new browser plugin here.
Last edited by et1337 on Thu May 13, 2010 8:24 am, edited 5 times in total.
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by ThomasEgi » Fri Dec 04, 2009 12:40 pm
looks very nice. i see many features added since the last version i tested.
how about embedding the game on you webside using panda's new and shiny web-browser plugin?
-

ThomasEgi
-
- Posts: 2147
- Joined: Fri Jul 28, 2006 10:43 am
- Location: Germany,Koblenz
by ThomasEgi » Fri Dec 04, 2009 1:23 pm
small bugreport  while in training mode it crashed after several minutes.
- Code: Select all
:linmath(warning): Tried to invert singular LMatrix3. :linmath(warning): Tried to invert singular LMatrix3. INFO: endMatch - Broadcasted match end packet. INFO: startMatch - Broadcasted match start packet. Traceback (most recent call last): File "main.py", line 723, in gameLoop game.update() File "main.py", line 371, in update self.entityGroup.update(self.localTeam, paused = not self.matchInProgress) File "/home/thomas/Desktop/stainless/stainless/src/entities.py", line 62, in update self.manager.update(localTeam, paused) File "/home/thomas/Desktop/stainless/stainless/src/net.py", line 509, in update p = entity.controller.serverUpdate(self.entityGroup.aiWorld, self.entityGroup, packetUpdate) File "/home/thomas/Desktop/stainless/stainless/src/controllers.py", line 270, in serverUpdate self.unitQueue.append(u) UnboundLocalError: local variable 'u' referenced before assignment :task(error): Exception occurred in PythonTask Game loop Traceback (most recent call last): File "main.py", line 728, in <module> run() File "/usr/share/panda3d/direct/showbase/ShowBase.py", line 2423, in run self.taskMgr.run() File "/usr/share/panda3d/direct/task/TaskNew.py", line 471, in run self.step() File "/usr/share/panda3d/direct/task/TaskNew.py", line 429, in step self.mgr.poll() File "main.py", line 723, in gameLoop game.update() File "main.py", line 371, in update self.entityGroup.update(self.localTeam, paused = not self.matchInProgress) File "/home/thomas/Desktop/stainless/stainless/src/entities.py", line 62, in update self.manager.update(localTeam, paused) File "/home/thomas/Desktop/stainless/stainless/src/net.py", line 509, in update p = entity.controller.serverUpdate(self.entityGroup.aiWorld, self.entityGroup, packetUpdate) File "/home/thomas/Desktop/stainless/stainless/src/controllers.py", line 270, in serverUpdate self.unitQueue.append(u) UnboundLocalError: local variable 'u' referenced before assignment thomas@Nekomimi-modebook:~/Desktop/stainless/stainless$
-

ThomasEgi
-
- Posts: 2147
- Joined: Fri Jul 28, 2006 10:43 am
- Location: Germany,Koblenz
by wvd » Fri Dec 04, 2009 3:54 pm
Very, very nice!
I've tried v0.3 already and I loved it. Such a creative game, and not like every shooter. Going to try this for sure!
-
wvd
-
- Posts: 36
- Joined: Tue Nov 24, 2009 11:24 am
by et1337 » Fri Dec 04, 2009 6:57 pm
wvd, thanks for your kind words! Hopefully the final release will be even better.
ThomasEgi, thanks for the bug report. Keep this up and I'll have to add you to the credits.
I'd love to try out the browser plugin, but even without Panda3D, the game is at least 80 megs. Isn't that too big?
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Fri Dec 04, 2009 7:40 pm
Toontown Online is almost 200 MB, and Pirates of the Caribbean Online is pushing 700 MB, and we're planning on putting both of them in the browser using Panda's new plugin system.
The plugin system includes a complete packaging system to make it easier to manage large assets like this; and the whole system is (mostly) documented in the manual. 80 MB might still be small enough that you can get away with just putting it in a single p3d file, which is the easiest way to distribute it; but if you want to spare your users the headache of downloading this every time, you can use Panda's new packaging system to download your game assets once and leave them there.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by Nemesis#13 » Sat Dec 05, 2009 9:11 am
just tested from source. menu shows up and the loading screens for each modes also seem to work, but at the end of the loading process it crashes with the following error:
- Code: Select all
No module named speech /home/nemesis13/code/python/panda/stainless/src/controllers.py:11: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5 DirectStart: Starting the game. Known pipe types: glxGraphicsPipe (all display modules loaded.) INFO: init - Failed to import speech library. Continuing happily. INFO: __init__ - Loading map: levels/arena/level.map :gobj(error): Texture::read() - couldn't read: ./../../../../stainless/arena/arena/lightmap.png :gobj(error): Unable to find texture "./../../../../stainless/arena/arena/lightmap.png" on model-path /home/nemesis13/code/python/panda/stainless:/opt/panda3d/etc/..:/opt/panda3d/etc/../models INFO: netWorker - Opening port 8081 for listening... INFO: netWorker - Listening INFO: __init__ - Map loaded: levels/arena/level.map INFO: startMatch - Broadcasted match start packet.
ODE INTERNAL ERROR 2: Please call ODE initialization (dInitODE() or similar) before using the library in dCollide() Aborted
the texture path errors are harmless, but it looks like you have a bug in the ODE implementation
-

Nemesis#13
-
- Posts: 1040
- Joined: Mon Aug 04, 2008 8:09 pm
- Location: Germany
by rdb » Sat Dec 05, 2009 9:15 am
Nah, it's Panda3D being incompatible with the latest version of ODE. I've already checked in the fix for it to Panda3D CVS.
I prefer e-mail over PM
-
rdb
-
- Posts: 8545
- Joined: Mon Dec 04, 2006 5:58 am
- Location: Netherlands
-
by Nemesis#13 » Sat Dec 05, 2009 9:18 am
to the web publishing issue: ~76MB of your game is music. compression makes no sense on MP3s, but you could sample it down or download them in background.
-

Nemesis#13
-
- Posts: 1040
- Joined: Mon Aug 04, 2008 8:09 pm
- Location: Germany
by rdb » Sat Dec 05, 2009 9:28 am
You're shipping MP3 with your game? I seriously recommend against that, as you'd need to get a very-expensive MP3 license if you don't want lawyers with pitchforks on your doorstep...
I prefer e-mail over PM
-
rdb
-
- Posts: 8545
- Joined: Mon Dec 04, 2006 5:58 am
- Location: Netherlands
-
by drwr » Sat Dec 05, 2009 9:48 am
Also, ogg files are smaller for the same audio quality level. Seems like a no-brainer.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Sat Dec 05, 2009 11:21 am
Ouch, thanks for the advice. I didn't know about the MP3 pitch-fork-toting-lawyer thing. I assumed since it was open source music...
Nemesis#13, where'd you get the 76 Mb number for music? On my copy of the game, the music folder is about 38 Mb. You're right though, I should definitely downsample/convert to ogg/download in the background.
So the only other issue I see with web publishing is that the game is currently LAN-only, which doesn't make sense in a browser game. What do I need to do to get things working over the internet? I would probably need to set up a server to host some kind of lobby too... Also, there are absolutely no anti-cheating measures, and I don't even know where to start on that.
It would be sweet, though. 
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by Zothen » Sat Dec 05, 2009 11:59 am
rdb wrote:You're shipping MP3 with your game? I seriously recommend against that, as you'd need to get a very-expensive MP3 license if you don't want lawyers with pitchforks on your doorstep...
Holy... never noticed that before: http://www.mp3licensing.com/royalty/ - 2.5k$ for a game... guess that makes mp3 not the first choice of indie developers...
Edit: No licence fees if less than 5000 units are distributed... time to set limits to the downloads, lol
-
Zothen
-
- Posts: 30
- Joined: Tue Feb 27, 2007 8:12 pm
- Location: Tanelorn
by et1337 » Sat Dec 05, 2009 8:25 pm
So I'm trying to make a p3d now. For now, I'm doing it without packages, because I couldn't get it working. But now I can't get the p3d working either, it apparently won't read my custom text files (.map). Does packp3d only read certain file types, like jpg, png, egg, etc, or what?
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Sat Dec 05, 2009 8:50 pm
Yes, it only looks for certain file extensions, and adds those, ignoring others. For something more custom, you'd have to use the ppackage command, and build a pdef file something like this:
- Code: Select all
packager.textExtensions += [ 'map' ] class mygame(p3d) dir('/my/start/dir') mainModule('main')
Then when you run "ppackage.p3d mygame.pdef", it will generate mygame.p3d, including your files named foo.map.
It would be a good idea to have a command-line option to packp3d to allow you to specify additional file extensions without having to go through this pdef rigamarole, though. I'll add that feature.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Sat Dec 05, 2009 9:25 pm
Hmm... looks like .map files still aren't added. I'm using "panda3d ppackage.p3d" instead of ppackage.py, would that make a difference? If so, where can I get ppackage.py?
Thanks for your help.
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Sat Dec 05, 2009 11:04 pm
No, ppackage.p3d is the correct filename. But ppackage does one more sneaky thing: it generates its output into a subdirectory called "install", instead of dropping it into the current directory. I bet you're looking at the old p3d file instead of the new one generated by ppackage.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Sun Dec 06, 2009 1:08 am
You were correct, of course. But it is still not including the .map files... I made sure the extension actually got added to textExtensions, and I looked at the Packager.py source and I can't figure out what the problem is. I've been probing around the VirtualFileSystem, and it looks like everything else in the folder is there. Calling it quits for tonight, we'll see.
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by Nemesis#13 » Sun Dec 06, 2009 10:06 am
et1337 wrote:Nemesis#13, where'd you get the 76 Mb number for music?
oops, just noticed i also counted the files from .svn Zothen wrote:Edit: No licence fees if less than 5000 units are distributed... time to set limits to the downloads, lol
units = files?
-

Nemesis#13
-
- Posts: 1040
- Joined: Mon Aug 04, 2008 8:09 pm
- Location: Germany
by et1337 » Mon Dec 07, 2009 2:31 pm
Alright, here's the p3d, with a few new features too.
http://a3p.sf.net/game.html
It doesn't work in the browser on my system, even on my localhost. Looks like it's loading, initializes ODE, etc, shows the "play" button, and then just sits there showing the cute little panda. Tested on Windows 7 x64 in Chrome, FF, and IE8. (all 32-bit)
It does work when I run it with panda3d.exe, but OpenAL isn't working; it reverts to NullAudioManager.
Last edited by et1337 on Sat Dec 26, 2009 4:15 pm, edited 1 time in total.
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Mon Dec 07, 2009 3:59 pm
Hmm, when I run it, I see this in the log:
- Code: Select all
File "VFSImporter", line 153, in load_module File "main.py", line 12, in <module> ImportError: No module named datetime Successfully joined thread: 0 Failure on startup.
which points out a problem with running packp3d.p3d--it doesn't have any way to find additional Python modules that aren't part of your source, but also weren't included in the Panda3D distribution. Hmm, let me investigate this. If nothing else, one ugly workaround would be to copy datetime to your source directory before packaging.
Also, it looks like the plugin isn't doing a good job of displaying the "failure" icon when the program triggers an exception at startup. I'll look into this too.
Note that you can inspect the logfiles in your Panda3D directory; p3dsession.log is the one that contains the Python session like this, and is most likely to be interesting. The location of your Panda3D directory varies according to your OS. On Windows XP, it's in c:\Documents and Settings\<your name>\Local Settings\Application Data\Panda3D; on Vista and Win7, it's in c:\Users\<your name>\AppData\Local\Panda3D (or LocalLow\Panda3D in IE with UAC enabled).
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Mon Dec 07, 2009 4:27 pm
Actually, I'm getting the same behavior from Tagger. Note: I'm using rdb's 0.9.7 runtime build he linked in the Tagger thread.
If this helps at all, here's my p3dplugin.log for Tagger (after closing the window):
[code]
NP_GetEntryPoints, pluginFuncs = 00939180
initializing
browserFuncs = 0093B008
Browser version 0.19
Plugin compiled with version 0.19
new instance 008D0060
new instance->pdata = 02898BC8
start_download: http://runtime.panda3d.org/contents.xml?1260221031
SetWindow 0, 0, 640, 480
NewStream application/xml, http://runtime.panda3d.org/contents.xml?1260221031, 14254, notifyData = 00542FA0
NewStream application/x-panda3d, http://www.ddrose.com/~drose/tagger/tagger.p3d, 2683139, notifyData = 00000000
StreamAsFile http://runtime.panda3d.org/contents.xml?1260221031, 14254, notifyData = 00542FA0
Attempting to load core API from C:\Users\et1337\AppData\Local/Panda3D/coreapi/win32/p3d_plugin.dll
DestroyStream http://runtime.panda3d.org/contents.xml?1260221031, 14254, notifyData = 00542FA0, reason = 0, for 008D0060, 02898BC8
URLNotify: http://runtime.panda3d.org/contents.xml?1260221031, notifyData = 00542FA0, reason = 0
start_download: http://runtime.panda3d.org/contents.xml?1260221032
NewStream application/xml, http://runtime.panda3d.org/contents.xml?1260221032, 14254, notifyData = 0054FBD0
DestroyStream http://runtime.panda3d.org/contents.xml?1260221032, 14254, notifyData = 0054FBD0, reason = 0, for 008D0060, 02898BC8
URLNotify: http://runtime.panda3d.org/contents.xml?1260221032, notifyData = 0054FBD0, reason = 0
Got p3d instance to stream 3
SetWindow 0, 0, 640, 480
destroy instance 008D0060, 02898BC8
save = 0257F6AC
Stopping stream ð–
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Mon Dec 07, 2009 5:09 pm
It looks like you didn't wait for the p3d file to finish downloading. Did you see a blue progress bar fill up below the cute panda?
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by drwr » Mon Dec 07, 2009 8:36 pm
Ah, I have the solution to the datetime problem. In the beginning of your pdef file, add the lines:
- Code: Select all
import sys sys.path.append('/my/python/lib')
and then it will search your own Python directory for datetime.pyd and add it to the p3d file. Two caveats: (1) you must point it to the same version of Python used by the runtime (2.6 at the moment), and (2) this will make your p3d file platform-dependent, because datetime.pyd is platform-dependent.
I'll add the -p option to packp3d to do the same thing.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Mon Dec 07, 2009 9:18 pm
1. I waited at least 20 minutes for tagger. It was frozen about 2 pixels from 100% most of the time. Might just be my computer or my runtime. I'm using rdb's 0.9.7 CVS build.
2. Glad that's fixed, but I think I'll find a cross-platform work-around for datetime... 
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Mon Dec 07, 2009 9:44 pm
1. I waited at least 20 minutes for tagger. It was frozen about 2 pixels from 100% most of the time. Might just be my computer or my runtime. I'm using rdb's 0.9.7 CVS build.
Hmm, this is a little worrisome. Did you notice whether you got that stall while downloading the p3d file (the blue bar would have no label) or while downloading the Panda3D runtime (the label would say "Panda3D" or something)?
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Mon Dec 07, 2009 9:46 pm
The loading bar was always blank.
[edit:] I updated the p3d file with a workaround to exclude datetime.
Last edited by et1337 on Sat Dec 26, 2009 4:16 pm, edited 1 time in total.
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Tue Dec 08, 2009 6:38 pm
I found a better, more long-term solution to problems like datetime: I defined an optional package called "morepy" which includes all standard Python modules that are not already part of the Panda3D mainline release.
So, in the future, if you try to build a p3d file and you discover it depends on a missing Python module, you can just add "-r morepy" to the packp3d command like (or require('morepy') to your pdef file) and you'll pick up the missing module(s).
The cost of this additional functionality is a mere 2MB additional download.
I'm downloading the new stainless p3d file now. Funny, it seems to think it doesn't know how big the download is--the loading bar is always at the top, as if the server weren't reporting the download size. But I think it does. Hmm.
Edit: and it doesn't appear to want to cache the p3d file from one session to the next. Most curious.
Anyway, after loading, I can start the tutorial--looks great!--and then it soon crashes with this stack trace:
- Code: Select all
:task(error): Exception occurred in PythonTask Game loop Traceback (most recent call last): File "C:\panda3d\built_cmu\direct\p3d\AppRunner.py", line 396, in run File "C:\panda3d\built_cmu\direct\task\Task.py", line 482, in run File "C:\panda3d\built_cmu\direct\task\Task.py", line 440, in step File "main.py", line 752, in gameLoop File "main.py", line 374, in update File "src\entities.py", line 62, in update File "src\net.py", line 520, in update File "src\controllers.py", line 989, in serverUpdate File "src\controllers.py", line 538, in serverUpdate File "src\controllers.py", line 489, in serverUpdate File "src\components.py", line 161, in serverUpdate ValueError: need more than 2 values to unpack
That looks like your problem to me.  If, however, I click on "Host", it crashes immediately with this stack trace, which looks like my problem: - Code: Select all
:task(error): Exception occurred in PythonTask eventManager Traceback (most recent call last): File "C:\panda3d\built_cmu\direct\p3d\AppRunner.py", line 396, in run File "C:\panda3d\built_cmu\direct\task\Task.py", line 482, in run File "C:\panda3d\built_cmu\direct\task\Task.py", line 440, in step File "C:\panda3d\built_cmu\direct\showbase\EventManager.py", line 61, in eventLoopTask File "C:\panda3d\built_cmu\direct\showbase\EventManager.py", line 55, in doEvents File "C:\panda3d\built_cmu\direct\showbase\EventManager.py", line 122, in processEvent File "C:\panda3d\built_cmu\direct\showbase\Messenger.py", line 325, in send File "C:\panda3d\built_cmu\direct\showbase\Messenger.py", line 410, in __dispatch File "C:\panda3d\built_cmu\direct\gui\DirectButton.py", line 103, in commandFunc File "main.py", line 690, in startServer File "src\online.py", line 14, in registerHost File "C:\panda3d\thirdparty\win-python\lib\httplib.py", line 898, in request File "C:\panda3d\thirdparty\win-python\lib\httplib.py", line 915, in _send_request File "C:\panda3d\thirdparty\win-python\lib\httplib.py", line 842, in putrequest LookupError: unknown encoding: ascii
I think this is another case of not including a standard Python library, in this case the "encodings" module and all of its fiddly bits. I've added this to the morepy module.
Your game is turning out to be an excellent customer to find the rough edges in the plugin support. Thanks for your patience!
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
by et1337 » Wed Dec 09, 2009 9:10 am
You were right about the first bug. Thanks for reporting that, it's fixed now.
And actually, the second error is due to me importing httplib to try and communicate with a makeshift sort of lobby server. I'm pretty sure I'm not doing that any more, so no need to worry.
On a related note, anyone know of a free web host that will let me listen for UDP traffic?  I need to do some NAT punch-through. [edit: Never mind, looks like I might be able to do this with some basic PHP...]
-

et1337
-
- Posts: 63
- Joined: Fri Dec 19, 2008 2:29 pm
by drwr » Wed Dec 09, 2009 10:43 am
OK, I've figured out why we're not getting a progress indication from the Sourceforge server on the download. It's because Sourceforge doesn't recognize the p3d extension, and assumes the file is type text/plain, then tries to live-gzip it during the download, which prevents the server from knowing exactly how much data it's sending us. This also, incidentally, breaks the caching mechanism, so it's bad all around.
Try creating an .htaccess file in the same directory with the following contents:
- Code: Select all
AddType application/x-panda3d .p3d
For my part, I'll add code to the plugin to better handle drawing the progress bar in cases where the server won't tell us how much data we're getting.
David
-
drwr
-
- Posts: 11253
- Joined: Fri Feb 13, 2004 12:42 pm
- Location: Glendale, CA
Return to Showcase
Who is online
Users browsing this forum: No registered users and 1 guest
| | |