--- /dev/null
+* 3 - 2015.?.?
+- Update documentation and homepage.
+- Fix a security issue reading untrusted bullet files.
+
+* 2 - 2010.04.24
+- Easier to extend Action with new behaviors.
+- Conditional <if>/<then>/<else> elements.
+- Faster Pyrex-less collision extension.
+
+* 1 - 2010.04.10
+- Initial release.
+++ /dev/null
-2 - 2010.04.24
- * Easier to extend Action with new behaviors.
- * Conditional <if>/<then>/<else> elements.
- * Faster Pyrex-less collision extension.
-
-1 - 2010.04.10
- * Initial release.
--- /dev/null
+# python-bulletml - BulletML for Python
+
+BulletML is the Bullet Markup Language. BulletML can describe the
+barrage of bullets in shooting games. (For example Progear, Psyvariar,
+Gigawing2, G DARIUS, XEVIOUS, ...) This module parses and executes
+BulletML scripts in Python. All data structures in it are
+renderer-agnostic. A sample renderer for Pygame is included. The full
+API documentation is contained in its Python docstrings.
+
+In addition to the standard BulletML XML format, this module supports
+an equivalent YAML format. For convenience, two simple collision
+routines are provided, `bulletml.overlaps` for stationary circles and
+`bulletml.collides` for moving circles.
+
+More information is available at
+[the BulletML homepage](http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html),
+or
+[the python-bulletml homepage](https://yukkurigames.com/python-bulletml/).
+
+ $ ./bulletml-runner examples/*/*.xml
+
+Use Page Up and Page Down to switch between bullet definitions, S to
+respawn the bullet pattern, and Enter to restart it.
+
+
+## Installing
+
+BulletML requires Python 2.6 or later. It should work on Python 3. It
+has no dependencies outside the CPython standard library.
+
+ $ ./setup.py build
+ $ sudo ./setup.py install
+
+
+## License
+
+The BulletML specification is the work of Kenta Cho.
+
+All example BulletML files in the examples folder are released into
+the public domain. Everything else is covered by the following
+license:
+
+Copyright 2010 Joe Wreschnig
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+++ /dev/null
-python-bulletml - BulletML for Python
--------------------------------------
-
-BulletML is the Bullet Markup Language. BulletML can describe the
-barrage of bullets in shooting games. (For example Progear, Psyvariar,
-Gigawing2, G DARIUS, XEVIOUS, ...) This module parses and executes
-BulletML scripts in Python. All data structures in it are
-renderer-agnostic.
-
-In addition to the standard BulletML XML format, this module supports
-an equivalent YAML format. See bulletml.bulletyaml for more details.
-
-Finally, two simple collision routines are provided, bulletml.overlaps
-for stationary circles and bulletml.collides for moving circles.
-
-A sample renderer for Pygame is included.
-
-More information is available at the BulletML homepage,
-http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html, or the
-python-bullet homepage, http://code.google.com/p/python-bulletml/.
-
-$ ./bulletml-runner examples/*/*.xml
-
-Use Page Up and Page Down to switch between bullet definitions, S to
-respawn the bullet pattern, and Enter to restart it.
-
-
-Installing
-----------
-BulletML requires Python 2.6 or later. It should work on Python 3. It
-has no dependencies outside the CPython standard library.
-
-$ ./setup.py build
-$ sudo ./setup.py install
-
-
-License
--------
-
-The BulletML specification is the work of Kenta Cho.
-
-All example BulletML files in the examples folder are released into
-the public domain. Everything else is covered by the following
-license:
-
-Copyright 2010 Joe Wreschnig
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
barrage of bullets in shooting games. (For example Progear, Psyvariar,
Gigawing2, G DARIUS, XEVIOUS, ...) This module parses and executes
BulletML scripts in Python. All data structures in it are
-renderer-agnostic.
+renderer-agnostic. A sample renderer for Pygame is included. The full
+API documentation is contained in its Python docstrings.
In addition to the standard BulletML XML format, this module supports
-an equivalent YAML format. See bulletml.bulletyaml for more details.
-
-Finally, three simple collision routines are provided:
-bulletml.overlaps for stationary circles, bulletml.collides for moving
-circles, and bulletml.collides_all for one moving circle against many
-moving circles.
+an equivalent YAML format. For convenience, two simple collision
+routines are provided, bulletml.overlaps for stationary circles and
+bulletml.collides for moving circles.
More information is available at the BulletML homepage,
http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html, or the
-python-bullet homepage, http://code.google.com/p/python-bulletml/.
+python-bulletml homepage, https://yukkurigames.com/python-bulletml/.
+
Basic Usage:
from bulletml import Bullet, BulletML
- doc = Bulletml.BulletML.FromDocument(open("test.xml", "rU"))
+
+ doc = BulletML.FromDocument(open("test.xml", "rU"))
player = ... # On your own here, but it needs x and y fields.
rank = 0.5 # Player difficulty, 0 to 1
+
bullet = Bullet.FromDocument(doc, x, y, target=player, rank=rank)
bullets = [bullet]
...
for bullet in bullets:
- bullets.extend(bullet.step())
+ bullets.extend(bullet.step()) # step() returns new Bullets
...
For drawing, you're on your own, but Bullet instances have a number of
from bulletml.impl import Bullet
from bulletml.collision import overlaps, collides, collides_all
-VERSION = (2,)
+VERSION = (3,)
VERSION_STRING = ".".join(map(str, VERSION))
__all__ = ["VERSION", "VERSION_STRING", "Bullet", "BulletML",
"overlaps", "collides", "collides_all"]
-
if __name__ == "__main__":
setup(cmdclass=dict(clean=clean, test=test_cmd, coverage=coverage_cmd,
sdist=sdist),
- name="python-bulletml", version="2",
- url="http://code.google.com/p/python-bulletml/",
+ name="python-bulletml", version="3",
+ url="https://yukkurigames.com/python-bulletml/",
description="parse and run BulletML scripts",
author="Joe Wreschnig",
author_email="joe.wreschnig@gmail.com",
barrage of bullets in shooting games. (For example Progear, Psyvariar,
Gigawing2, G DARIUS, XEVIOUS, ...) This module parses and executes
BulletML scripts in Python. All data structures in it are
-renderer-agnostic.
+renderer-agnostic. A sample renderer for Pygame is included. The full
+API documentation is contained in its Python docstrings.
In addition to the standard BulletML XML format, this module supports
-an equivalent YAML format.
-
-Finally, two simple collision routines are provided, bulletml.overlaps
-for stationary circles and bulletml.collides for moving circles.
-
-A sample renderer for Pygame is included.
+an equivalent YAML format. For convenience, two simple collision
+routines are provided, bulletml.overlaps for stationary circles and
+bulletml.collides for moving circles.
More information is available at the BulletML homepage,
http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html, or the
-python-bullet homepage, http://code.google.com/p/python-bulletml/.
-"""
- )
+python-bulletml homepage, https://yukkurigames.com/python-bulletml/.
+""")