ChangeLog for XPuyoPuyo. Copyright(c) 1999-2003 Justin David Smith. Changes in v0.9.8: * Correcting a packaging error, and addressing compiler warnings that surface in GCC 3.3. Changes in v0.9.7: * Fixed compiler warnings on Debian, and installer problems. Changes in v0.9.6: * New theme ``fabo'' Changes in v0.9.5: * Porting some dialog bugfixes in xscorch over to xpuyopuyo * Porting over xscorch's help system into xpuyopuyo * Cleaned up configure script a bit Changes in v0.9.4: * More verbose error message if theme load fails * Fixed '//' path problem that prevented execution on cygwin Changes in v0.9.3: * New theme added -- Spheres * Some documentation cleaning Changes in v0.9.2: * Fixed p_ai_decide() prototype error (spotted by Patrick Markiewicz) * Fixed configure error that was introduced by the stow patch. * Minor correction in network timeout code. * Sound effects implemented, although we're still experimenting with the actual effects. Command-line options Changes in v0.9.1: * AI code reverted to the 0.2 codebase. * Fixed bug in tournament mode regarding AI selection. * Added --insanity command-line option. I haven't been able to fix the AI code since it went awry, so I've decided to revert to the old AI code from 0.2 for the stable 1.0 release. I'll tweak the default AIs a bit, and the entire AI system will be changed someday, but at least for 1.0 the AIs are more challenging. Changes in v0.9.0: * Updated theme 3dRokz. * Made configure more friendly to stow and related programs. Basically, we're in the bugfix phase now before we go to a stable release of 1.0 :) The only thing that's still missing that I'd like to have is sound effects, but I'm not one to create them. If you have any feature requests, now's a good time to make them - if it's not in the TODO file, it's not currently planned, so if you sent a request in before, please resend it so I know to implement it. If you have any bug reports, now is a _very_ good time to send them. Otherwise, barring any new features or bug reports, I will finish off what is in the TODO file and take xpuyopuyo to a stable 1.0 release! Hooray! Changes in v0.4.2: * Uses join face when puyo is joined. * New theme: smileys (Brett Smith) Changes in v0.4.1: * Fixed segfault in pgame.c when sound disabled Changes in v0.4.0: * Sound support added * Music added -- still waiting on sound effects * Updates to how hostname is obtained * Fixed compilation error when --disable-network specified. * Counting error on closed shapes fixed: This bug manifested itself when mintomatch == 5 and a square cluster was formed -- the square cluster was counted as 7 connected puyos, hence a match. Oops. (thanks to Nick Cabatoff for spotting) * Old hack involving DESTDIR removed. Changes in v0.3.8: * Merged Denny Mingus's theme * Minor bugfixes I will start writing a sound backend for this game soon (actually it will be the sound engine for xscorch as well). I need two things to make this happen, because I am definitely not a sound artist: 1) A soundtrack 2) Sound effects If you'd like to contribute either of these, please get in touch! Also, if you've written a theme for xpuyopuyo, send it in and I'll add it to the distribution. If I get enough contributions, then I will setup a ``themes'' page on the website. Enjoy, -J Changes in v0.3.7: * More installation bugfixes * Dialog cleanup for a few dialogues Changes in v0.3.6: * Take II: Okay, the configure system should actually work now. Changes in v0.3.5: * Fixed minor bug in painting the next piece * Fixed an odd formatting bug in help system * GNOME files now install again * Fixed problem with $DATADIR in configure.in Changes in v0.3.4: * Some reorganization of code, cleaned out some old files/functions * Beginning of the theme support * Theme selection from the UI, and themes are saved * Beginnings of a help page * Will link against libnsl/socket if present (needed for Solaris) You can now create the directory ~/.xpuyopuyo/themes/, then run command "xpuyopuyo --theme " to load custom themes. Just create the images in this directory (currently they must be XPM, and must have the same filenames as the default theme). If you create any themes, send them along! Changes in v0.3.3: * Comments are read properly in key config (thanks to Doug Bell) Changes in v0.3.2: * Changed FNONBLOCK to O_NONBLOCK * snprintf implementation missing on some systems * Man page is properly living in section 6 now Changes in v0.3.1: * AI mode allowed in network play (for debugging purposes only) * Numerous internal fixes * Network communication is somewhat less verbose * Sockets are blocking currently (workaround to broken pipe) * Split pconfig.h to reduce compile time when that file is changed * Player names are finally displayed - so you know who you're playing * ENTER while paused un-pauses instead of restart game. * Random AI selection (see AI dialogs, or "-r random" option) Changes in v0.3.0: * Cleaned up pconfig.c, pgame.c * Fixed a bug that prevented rock nullification * More error checking on the network code * Added statusbar * Desktop file incorporated for GNOME (someone let me know if this works, I can't test it myself) * Fixed a bug with sending acceleration in the network config * Updated the manual page * Dialogues now are really dialogues The network code still isn't all that great, but I hope it won't at least crash on an error. At this point, I just need people to test it out and see if it actually works. Send along suggestions, bug reports, etc. Changes in v0.2.11: * Re-organisation of files * Created the manual page * Updated documentation * Command line arguments improved * Fixed divide-by-zero in p_statistics * Wrote basic network support * (c)notice updates The network code in this release is _unstable_. There is very little error handling in the network code -- network errors will likely cause a crash. Also, the protocol is very likely to change so this version will probably not be able to communicate with v0.3.0 (which is coming as soon as the network code is cleaned up). Give it a try though, and let me know what bugs pop up along the way. The manual page is not updated, but you can launch network mode from the "Network" menu, or by giving command line switches to the program. The switches of interest are --port=n (select something other than the default port), --server (run the server), and --client=servername (run a client, connect to the server. Basically, xpuyopuyo --server # on machine "foo" xpuyopuyo --client=foo # on machine "bar" WARNING: There may be problems running the network code on 64-bit machines. I have not tested it, and I don't really expect it will work well. Changes in v0.2.10: * Added AIBREED option; several changes related to this flag. * Window would not refresh on resize (probably from change to field) * Fixed some messiness in the TOURNAMENT code. * Some minor code commenting * aidrop flag wasn't being saved * On similar note, your choices of AI players will now be saved * More digits in score display * Partial fix to changing width, height in options dialog I must be insane, as I'm releasing this during my finals week. I completed my last final at 4:00am localtime, and starting working on xpuyopuyo at 5:00am. Well, here's a release that includes the features of 0.2.9 with a usable number of AI's. The genetic algorithm code for mutations, etc. is not enabled by default. If you like, you can ./configure --enable-aibreed if you really want to play around with the GA code. The aibreed option will give you 64 AI's, and will enable the mutations code. A few other bugfixes are implemented. The next release will probably be 0.3. I'm going to be gone for a couple of weeks for winter break, but I should have some time after I get back to start the network code. Changes in v0.2.9: * AI code completely rewritten; AI now in separate lib * Fixed bug: win/loss counts weren't always being saved * Status numbers are now only updates once/second * Fixed AI lockup when calculated score was very negative The AI's are now controlled by genetic algorithms. In its current state the genetic algorithm code is NOT COMPLETELY STABLE, but the only code having problems currently is the mutations, so you should be safe if you don't run tournament mode. Yes, the current set of AI's aren't all that great in 0.2.9, that's because I haven't spent any real time writing AI rules or evolving a nice competitive set of rules. Yes, there are currently 64 AI slots... that's only so I can have a larger set of possibilities when evolving the AI's. The final version will probably come with 8 or so default AI's, but allow the user to create new AI rules (add more AI's to the game). This is not a stable release, but I throw it out there so people can see what I'm working on. Once I get the AI code a little more stable, I'll start working out some networking code (oh, won't that be fun :) I'll also write up a little bit about my genetic algorithm implementation a little later; it's actually based on a paper published "Artificial Evolution for Computer Graphics", Karl Sims, in ACM Computer Graphics vol. 25, no. 4 July 1991. Changes in v0.2.8: * Options dialog; some advanced options have been moved to here, instead of cluttering the menus. * Main window interface cleanup * AI selection interface cleanup * Options are now saved between sessions * Quiet toggle in game * Fix bug where some options didn't update menus xpuyopuyo now has its own configuration directory, by default ~/.xpuyopuyo. If you want to keep your old key definitions, "mv .xpuyopuyo-keys .xpuyopuyo/userkeys" ought to do the trick. Also, I cleaned up the user interface somewhat (the menus were getting ridiculously long), now all of the advanced features are lumped in one, easy-to-get-to dialog window. Changes in v0.2.7: * AI keeps generation count * Keep track of AI wins * Support for more AI's * More AI rules * AI evolution has changed significantly * Graph window uses scrollbars * AI select window uses scrollbars You may want to remove ~/.xpuyopuyo-ai to reset the AI rules-- they have changed in 0.2.7. Also, the high scores dialogue isn't all that great yet; it just shows the raw data: "player - score (survival, rocks sent, rocks received)" An icon is now distributed with the game, xpuyopuyo.xpm but is not used by default (use your WM to set the icon). Also, if you're wondering about the window style used in the screenshots, my gtkrc file is also included in the distribution. I'm currently evolving some AI's, so the AI descriptions have been removed for now (they weren't descriptive for the AI's anymore). The new AI's are pseudo-temporary, to give me a larger population in the tournaments. At this point, network support will probably come along in another month or so (around American Thanksgiving), unless someone else would like to contribute network code. If you want to contribute, drop me an email first and I'll make sure you have the latest source files :) Changes in v0.2.6: * Multiple image types! * High scores are saved * Changed method of redraw * Fixed nasty memory leak, playing piece's redraw field was not being released properly. High scores and fitness calculations are... amusing. Currently, the player who loses may rank higher on the "High Scores" list than the winner. Also, in AI/AI gameplay, the loser may have a slightly higher survival, this is because the loser probably had a more built-up playing field, and was thus getting more pieces over a period of time than the winner. The percentages should compensate for this, some. Changes in v0.2.5: * Minor fix in statistics/fitness. Changes in v0.2.4: * Indestructible blocks (this is a feature I've seen in a few other versions of puyopuyo; you need to basically get five simultaneous matches to get an indestructible block). * Fitness calculations * Fixed move-while-paused bug * New diagonal AI rule Changes in v0.2.3: * AI mutations in tournament or AI-vs-AI gameplay * Fast, looping tournament mode (--hypertournament) * Fixed problem, could not select number of colors in menus * pgame.c split into three files, better organised * Field width, height, minimum to match selection * Rock nullification * Acceleration now implemented * pai is abstracted * Numerous miscellaneous bugfixes * Fixed extremely nasty out-of-bounds array in num_clumps data * Added AI graph (it's pretty :) In this version many features have not been thoroughly tested, so if you find a bug please let me know! In particular, the AI code changed significantly and many options were added, which broke some existing code, and I haven't found all the bugs yet. Also note, the game Default Options have changed to "Easy Mode" settings. You might want to use -m or -H (or select from the Options menu) to enable harder gameplay. Acceleration makes the game much more interesting than it used to be! Current AI state is saved in ~/.xpuyopuyo-ai. Remove this file to restore the "factory-default" AI settings. AI mutations can only occur on AI-AI games (demonstration mode or the AI tournaments, which are used to "evolve" the AI's). In a later version, once I find a semi-stable set of rules for the AI's, new rules will be set as the defaults for the game. In the meantime, you can play with the rules manually by modifying the AI file, then launching the game to try your modifications. A note on the AI graph, it is a debugging tool mostly. Each rule is graphed by its weighting on the graph. Dotted lines indicate the "factory default" settings for each AI, and the solid lines are the current state for each AI. Changes in v0.2.2: * Can now configure keys * Escape now ends current game, not exits (use Ctrl-X now) * AI rule selection is now a list * Fixed bug in key handler (was not redrawing player 1 in single player games) * Paint code is cleaned up a bit, is a little more intuitive * Keys, images, etc are now saved in an array; use constants in pwindow-gtk.h to access a particular element. Also, *image_index functions will automatically select the correct image and mask. * Fixed some confusing names in the namespace * New AI Rules * Tutorial mode, where an AI will assist you in making a move (for beginners, allows an AI to "assist" in a game by suggesting moves) (also in place to help debug the AI's :) * NoDelay option, for slightly faster gameplay (doesn't do that much, for now) * Player and AI speeds are now initially equal when using -e, -m, -H * Rudimentary score function (high scores coming when I decide on scoring method) Notes on key configuration: Your key definitions will be saved to the file ~/.xpuyopuyo-keys, so they will be loaded again when you start the game. You can define up to three keys per action per player. To define a key(s), select Options, Set Keys (or press Ctrl-K), click the field you want to define, and press the key. Key combinations are not allowed, and you should probably avoid using modifier keys (although you can use modifier keys if you really want to). Note, ENTER will still restart a game, P will pause, and Escape will end the current game, unless you define these keys as player controls. You can also use Ctrl-R, Ctrl-Z and Ctrl-E if needed. Notes on tournament mode: Tournament mode has the sole purpose of testing the AI's against each other. To run tournament mode, try something like this, xpuyopuyo -zct -S 50 Each AI will be put up against other AI's in tournament style, until eventually an AI "wins" the tournament. The order of tournament is randomized, so multiple runs of this should eventually show which AI is the best. It's mainly for trying out the AI's, but it also makes a pretty screen saver :) Miscellaneous: many options can only be set when no game is active, so if Options you wish to select are disabled, try Game > End Game first. Changes in v0.2.1: * Fixed GNOME compile error Changes in v0.2.0: * GTK code is in place * Options and various other menus - can now configure during the game * About window (yay! Click the yellow puyo for more fun) * Miscellaneous other odds and ends * some minor AI code fixes * Code is now somewhat commented, can theoretically put any frontend onto the game engine, libxpuyopuyo. * Fixed blue-join bug * Fixed GTK transparency bugs (problem with clipping) * Two options for rotate method, see ./configure --help for info This version is a test release to see how the GTK frontend goes. Let me know if you think both Xlib and GTK frontends should be maintained. The Xlib interface would probably not ever have the degree of runtime configuration that the GTK version has even now, but if you don't mind setting up on the command line.. :) This version requires GTK (the Xlib code is currently broken and is also in quite a state of disarray). There haven't been many changes in the game proper, so if you still want the Xlib interface use version 0.1.1. The GTK frontend will be cleaned up some more (there are still a few rough spots) but it is possibly more playable now than before. Changes in v0.1.2 (not released): * GTK (and minimal GNOME) support, see ./configure --help * Code reorganization, minor fixes * Piece rotation is now more intuitive Changes in v0.1.1: * help text in game updated, now lists AI rules correctly * Updated README, INSTALL, etc files * Fixed potentially nasty bug with game timer. Now uses struct tm all the way, not the sneaky cheating method with those longs.