February 2009 challenge
Assembly Line - Great game! One possible bug?
Posted by HanClinto on 2009/03/01 04:29
Great job! Thoroughly enjoyed this game when it was entered into Pyweek, and have been enjoying the post-Pyggy bugfix release.
However, I'm trying to output a 4x4 panel of Phrisbees, and running into trouble. I put Phrisbees on a QA machine, and they're being rejected, but when I inspect them, they look perfect. I can't figure out what's wrong.
I saved the game file to see if you might find it helpful:
http://hanclinto.com/dav/Clint/4x4PhrisbeeBug.alg
Thanks!
--clint
Assembly Line - assembly Lines feedback
Posted by claxo on 2009/02/12 14:52
And, I fear the wording can feel too pushy, but thats not the intention. Blame this to my low english skills.
Theres a lot that the game does, but I dont get engaged.
The basic problem is the unclarity factor, at various levels:
top level: What is the game about ?
The readme.txt gives a description for a 'Assembly Lines: The Engineer'; the first look at the game is more like 'Assembly Lines: The Manufacturing Tycoon'.
Decide what, and put the relevant description in a intro screen.
second level: ui design
The current design has too much top level elements, and probably too much info at all.
Make the ui design show the conceptual hierarquies involved, make it hint a reasonable workflow.
By example, if going with 'the engineer' variant:
-- begins design -- The game consist of fulfilling a series of orders from the company management. Example orders: design an assembly line for a new product, adjust existing Assembly line to product upgrade, adjust product volume, adjust to custom batch All the company, financials and product sales ui elements dissapear. Left Pane: projects pool : button list, each representing a job to be done. Pressing a button will select the project in the project area. Each button hints about completion ( mark or color ). The world model adds or deletes projects. history button: will pop up an scrollable history for the 'news channel' ( new technolgies announcements, promotions, bonus, help hints ) save,load, time flow buttons. Right Pane (project area): Top Pane (Collapsabile Area Control): job - task description Medium pane: basically like the current factory screen, empty if the job is 'new design', loaded with the base design for a 'modification order'. Added a 'commit button', added a mark to the 'last machine selected' button that hints it will expand all the buttons with tool tips Bottom Pane: Left Pane: Product Spec ( assembled product and pieces, scrollable bitmap array ) Right Pane: Inspection Tool (drag a piece from the product spec pane and one from the assembly line to compare ) Compare area Adjust position buttons ( to control offset of one of the pieces ) Clear button. Real state is under pressure here, the best probably is breaking the medium pane ( factory) in left pane ( scrollable area, the factory map) and right pane ( the toolbar). As an alternative, or aditionally, the bottom pane can be made collapsabile. The current top level Machines windows must disappear. In the 'last machine selected pop up window' add text to each bitmap. The current top level Inspection windows disapears, ( inspection now is into the bottom pane) The notification channel will pop up a window with the last new. -- ends design --
Note: in the variant 'Assembly Lines: The Manufacturer Tycoon', one could think as the player fulfilling two roles: CEO and Enginer. To acomodate this, the left pane can be tabbed, with tabs CEO and ENG. While selecting the ENG tab, you see the previusly designed interfase, selecting CEO must show a right pane designed for the CEO tasks)
third level:
tmove content from the manual to the apropiate controls ( tooltips, news channel, help's buttons if any. )
fourth level:
Examine player activities from a new player point of view. Asume it will not read the manual. Detect problem points and revamp.
Problem examples in the factory, and posible solutions ( assuming the design is like outlined )
. rclick over a machine brings up the configure or properties pop-up window . use mouse drag to move machines . lclick into the 'machine selection pop up miniwindows' adds the machine to the map . Eliminate the '+', 'move', 'configure' buttons. Change the icon for delete to trashcan or eraser (behaving as del key). key 'Del' would erase the current selected machine . eliminate the inspection icon. Inspection will be done by draging the product part to the inspection pane ( or selecting the product part and lclicking in the inspection pane )
Examples:
the inspection pane can have a 'question mark minibutton', pushing it will pop up the hint 'drag here a part from the assembly line an one from the product spec pane to compare'.
At entering a new game, send the 'news element' 'Congrats, you are working now for xxxlll company and have assigned a project. Select a project by clicking one of the Current projects buttons. When you are done with the project, commit it'
Visitation - visitation feedback
Posted by claxo on 2009/02/09 21:31
with pygame 1.7 text has black bg, not transparent (looks ok with pygame 1.8.1).
soft scroll.
sun sprite looks good.
Getting cheap gains from openGL:
Would be better if your game logic decoupled from screen resolution. After all, the render is done with openGL. I mean writing the logic in world units, and the render scale acording to resolution. That way, you allow to select the screen size that better feels. Think the variety of display devices: netbook screen, 17'' crts, 22'' wide screen, OLPC.
floats for world coords: If at some time you want to guide objects along soft curves using delta physics, int coords will introduce inacceptable rounding errors. Even moving a sprite in the h axis at slow speed looks much better using floats coords + openGL.
Legends of Kiralia: Shadows Dawn - zk_kiralia feedback
Posted by claxo on 2009/02/06 14:31
Much improved !!! I am not a fan of the genre but a combination of presentation and good enough hints made me into the game by two hours. More activities: As I see the gameplay, the player is in a loop: repeat: wander fight sometimes: trade in city break in castle with most of the time in the first two. And this feels a little repetitive. What about adding more activities to happen in the wander, by example: . find things ( for trade or improve powers ). Things visible only from short distance. . RPG condiments: have NPCs on the road (static and wanders). Get pieces of map or critical info from them. . Portals where the player warps can be protected by a spell that must be broken; this gives another reason to interact with NPCs and find things. Also, this protect the player for going too fast into the more dangerous zones. . show in the wander mode where near enemies are, allowing to chose alternative route if available . with more things to do while wander, the number of fights can be reduced after a while: too much in a row and begins to feel repetive. Clarity factor: In general it is clear whats going on, and what is reasonable to do. But: after a while, I was wondering about where to find the strings. The only things found by wandering were enemies and sites to trade. Enemies are invisible in the wander map, will the string be invisible ? Will be captured in one of the road fights ? The story can tell that the 'Dark Lords' has taken the string ( the word 'lord' more assosiated with 'castles' ), NPCs can give notices about diferents 'Dark Lords': this way you reduce the 'I dont know what to do' factor. Found the first castle, issue enter, win the guardian round, not realized that you must issue a second enter. Can be better if you put the guardian out of the castle or if after kill the guardian the player goes automatically into the castle. Possible bugs: Elixirs are supossed to be persistent boosts, but inteligence elixir over athon vanishes.
Threads of Fate - Threads of Fate: some bugs or anomalies
Posted by claxo on 2009/02/06 13:50
after clicking a character to select it, the green frame dont show till you move the mouse.
sometimes the 'next character' will skip one or two characters in the party.
sometimes clicking over a character dont select him, but clicking in the hud element for the character does it.
party pawns can move over a position where an enemy stands.
sometimes party pawns can move to a position where another party pawn stands.
dotie with bow, having APs can not fire.
lodo cast energy bolt: bolt apear over lodo position, not over enemy.
Two tracebacks: one the known
[...]
File "D:\pygame\threads-of-fate-2.3\gamelib\success.py", line 20, in __init__
[self.party.items.append(i) for i in character.pack]
AttributeError: 'PC' object has no attribute 'pack'
The other:
EnergyBolt: 4 damage to PC Lodo health=-10 PC Lodo health=-10 damaged 4 Traceback (most recent call last): File "run_game.py", line 9, in main.main() File "D:\pygame\threads-of-fate-2.3\gamelib\main.py", line 66, in main director.run(cocos.scene.Scene(MainMenu("Threads of Fate"))) File "D:\pygame\threads-of-fate-2.3\cocos\director.py", line 296, in run event_loop.run() File "D:\pygame\threads-of-fate-2.3\pyglet\app\win32.py", line 63, in run self._timer_func(0, 0, timer, 0) File "D:\pygame\threads-of-fate-2.3\pyglet\app\win32.py", line 84, in _timer_f unc sleep_time = self.idle() File "D:\pygame\threads-of-fate-2.3\pyglet\app\__init__.py", line 193, in idle window.dispatch_event('on_draw') File "D:\pygame\threads-of-fate-2.3\pyglet\window\__init__.py", line 1217, in dispatch_event EventDispatcher.dispatch_event(self, *args) File "D:\pygame\threads-of-fate-2.3\pyglet\event.py", line 340, in dispatch_ev ent if handler(*args): File "D:\pygame\threads-of-fate-2.3\cocos\director.py", line 306, in on_draw self._set_scene( self.next_scene ) File "D:\pygame\threads-of-fate-2.3\cocos\director.py", line 362, in _set_scen e self.scene.on_exit() File "D:\pygame\threads-of-fate-2.3\gamelib\level.py", line 654, in on_exit super(Level, self).on_exit() File "D:\pygame\threads-of-fate-2.3\cocos\cocosnode.py", line 459, in on_exit c.on_exit() File "D:\pygame\threads-of-fate-2.3\cocos\layer\base_layers.py", line 90, in o n_exit super(Layer, self).on_exit() File "D:\pygame\threads-of-fate-2.3\cocos\cocosnode.py", line 459, in on_exit c.on_exit() File "D:\pygame\threads-of-fate-2.3\gamelib\actions.py", line 302, in on_exit self.result() File "D:\pygame\threads-of-fate-2.3\gamelib\actions.py", line 415, in do_hit self.spell.do(self.level, self.character, self.cell, self.other) File "D:\pygame\threads-of-fate-2.3\gamelib\magic.py", line 88, in do other.apply_damage(damage) File "D:\pygame\threads-of-fate-2.3\gamelib\character.py", line 439, in apply_ damage self.dispatch_event('on_character_damage', self, old_health, damage) File "D:\pygame\threads-of-fate-2.3\pyglet\event.py", line 340, in dispatch_ev ent if handler(*args): File "D:\pygame\threads-of-fate-2.3\gamelib\level.py", line 135, in on_charact er_damage sprite = self.get_sprite(character) File "D:\pygame\threads-of-fate-2.3\gamelib\level.py", line 113, in get_sprite return self.character_sprites[character.name] KeyError: 'Lodo'
Threads of Fate - Threads of Fate crashes..
Posted by ServalKatze on 2009/02/06 12:41
Traceback (most recent call last): File "run_game.py", line 9, in main.main() File "threads-of-fate-2.3/gamelib/main.py", line 66, in main director.run(cocos.scene.Scene(MainMenu("Threads of Fate"))) File "threads-of-fate-2.3/cocos/director.py", line 296, in run event_loop.run() File "threads-of-fate-2.3/pyglet/app/xlib.py", line 94, in run sleep_time = self.idle() File "threads-of-fate-2.3/pyglet/app/__init__.py", line 187, in idle dt = clock.tick(True) File "threads-of-fate-2.3/pyglet/clock.py", line 698, in tick return _default.tick(poll) File "threads-of-fate-2.3/pyglet/clock.py", line 295, in tick item.func(delta_t, *item.args, **item.kwargs) File "threads-of-fate-2.3/cocos/cocosnode.py", line 688, in _step action.step(dt) File "threads-of-fate-2.3/cocos/actions/base_actions.py", line 101, in step self.update( min(1, self._elapsed/self.duration ) ) File "threads-of-fate-2.3/cocos/actions/base_actions.py", line 346, in update self.actions[ found ].start() File "threads-of-fate-2.3/cocos/actions/instant_actions.py", line 134, in start self.func(*self.args, **self.kwargs) File "threads-of-fate-2.3/gamelib/actions.py", line 298, in done self.attack.level.scroller.remove(self) File "threads-of-fate-2.3/cocos/cocosnode.py", line 400, in remove self._remove(obj) File "threads-of-fate-2.3/cocos/cocosnode.py", line 410, in _remove child.on_exit() File "threads-of-fate-2.3/gamelib/actions.py", line 302, in on_exit self.result() File "threads-of-fate-2.3/gamelib/actions.py", line 187, in do_hit self.other.apply_damage(damage) File "threads-of-fate-2.3/gamelib/character.py", line 439, in apply_damage self.dispatch_event('on_character_death', self) File "threads-of-fate-2.3/pyglet/event.py", line 340, in dispatch_event if handler(*args): File "threads-of-fate-2.3/gamelib/level.py", line 198, in on_character_death director.replace(success.Success(level)) File "threads-of-fate-2.3/gamelib/success.py", line 20, in __init__ [self.party.items.append(i) for i in character.pack] AttributeError: 'PC' object has no attribute 'pack'
Kiko - Kiko crashing
Posted by ServalKatze on 2009/02/02 16:00
Traceback (most recent call last): File "kiko_play.py", line 55, in kiko.main.run() File "D:\Transfer\freigegeben\pyggy\kiko\kiko\main.py", line 133, in run File "D:\Transfer\freigegeben\pyggy\kiko\libs\gamebits\sm.py", line 27, in ptick File "D:\Transfer\freigegeben\pyggy\kiko\libs\gamebits\trans.py", line 39, in e_start File "D:\Transfer\freigegeben\pyggy\kiko\libs\gamebits\sm.py", line 82, in sm TypeError: __init__() takes exactly 1 argument (3 given)
Visitation - Successful blitz, too little too late
Posted by saluk on 2009/02/01 19:18
The game is obviously unfinished, and likely very confusing to play. It has changed a lot from the original version, as an effort was made to give the player actual things to do and micro manage, instead of having it feel like you just sit back and watch things. Instead of controlling a faceless entity, you control a person who can walk around and interact with things. If you read newdesigntoruletheworld.txt there is a better idea of where we are going, along with a story that you won't find in the hastily written readme.
The control so far, is mostly limited to building buildings (interact with the tower, get a flag for the building you want to make, walk to where you want it built, and press space to drop the flag), and hiring and firing workers at each building.
Important: At the last minute, I mistakenly forgot to add flags for making houses or new towers. These can be instantly added by pressing "A" or "S" respectively.
There are no longer away missions like there used to be, as the landscape is continuous in either direction. Explorers and soldiers are planned, but we ran out of time :) The goal of the game is basically to make a thriving city, more goals are also planned, hehe. The most unique features are the day and night system (where people work at certain times and go home at night), and being able to help out carriers by moving resources around.
Work on this is far from over, but at least we finally know where we are going. Hopefully it will be more complete in the next pyggy, if games can be entered repeatedly.
Endgame: Singularity - UnboundLocalError
Posted by bishop on 2009/02/01 18:16
Here's an error I got when selecting the Finance menu after having created some new bases:
Exception in function show at Sun Feb 1 19:23:47 2009 CEST: Traceback (most recent call last): File "/home/paulb/Software/Python/Games/singularity-0.30/code/safety.py", line 58, in safe_call return func(*args, **kwargs) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/dialog.py", line 189, in show result = self.handle(event) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/dialog.py", line 306, in handle return self.call_handlers(handlers, event) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/dialog.py", line 318, in call_handlers handler(event) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/button.py", line 109, in handle_event self.activate_with_sound(event) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/button.py", line 122, in activate_with_sound self.activated(event) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/button.py", line 151, in activated self.function(*self.args, **self.kwargs) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/button.py", line 197, in show_dialog raise constants.Handled, dialog.call_dialog(self.dialog, self) File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/dialog.py", line 96, in call_dialog retval = dialog.show() File "/home/paulb/Software/Python/Games/singularity-0.30/code/screens/finance.py", line 121, in show return super(FinanceScreen, self).show() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/dialog.py", line 175, in show Dialog.top.maybe_update() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/widget.py", line 297, in maybe_update self.update() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/widget.py", line 301, in update self.prepare_for_redraw() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/widget.py", line 293, in prepare_for_redraw child.prepare_for_redraw() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/widget.py", line 293, in prepare_for_redraw child.prepare_for_redraw() File "/home/paulb/Software/Python/Games/singularity-0.30/code/graphics/widget.py", line 280, in prepare_for_redraw self.rebuild() File "/home/paulb/Software/Python/Games/singularity-0.30/code/screens/finance.py", line 51, in rebuild cash_info, cpu_info = g.pl.give_time(seconds_left, dry_run=True) File "/home/paulb/Software/Python/Games/singularity-0.30/code/player.py", line 298, in give_time cpu_available=real_cpu )[0] UnboundLocalError: local variable 'real_cpu' referenced before assignment
Assembly Line - Assembly Line Doc Update
Posted by gcewing on 2009/02/01 04:55