Comments by FergusDuniho
Okay, it looks like I still had to do that by hand. When I saw your email captcha, I assumed the message wasn't there, since at one time, it showed only one or the other. Then I changed that and forgot I did. I just updated the change email script to set deadEmail to 0 when it successfully changes an email address.
I modified the connect_to_database() function to no longer use mysql_connect(). While I was converting from mysql functions to PDO methods, I had it open both a mysql connection and a PDO connection. Now it opens only a PDO connection. I also made some further modifications. I set it to use the charset utf8mb4. One consequence I saw of this was that the umlauted i in Caïssa Britannia got messed up. I fixed this by reentering the name. If it happened to this, it may have happened to other game listings in the database. I also set PDO::ATTR_EMULATE_PREPARES to false, which means it will now use native prepares, which pass the SQL and the values separately. I learned that I had been using emulated prepares, which actually puts everything together on the PHP side before passing it to the database. I read that this is supposed to be 100% secure when the charset is set to utf8mb4, but I still wanted to try to get it to use native prepares. Some scripts were giving me problems for a while, and I went back and forth between native and emulated prepares while trying to work out these problems. These problems now seem to be fixed, and the scripts seem to be working well with native prepares. But maybe there are scripts I still need to test. So let me know if anything seems amiss.
One problem with my old unicode conversions is that to get the text to appear as unicode on the page, it had to look like gobbeldygook in the database. By setting the charset to utf8mb4 when opening a PDO connection, I am able to have text appear as unicode on the page while also appearing as unicode in the database. This is a good thing, but it also means that I have to do the unicode conversions over. I just did names of inventors. But to do this, I had to temporarily delete "charset=utf8mb4" from connect_to_database(), so that the text would appear correctly on the page so that I could copy and paste it to the database. When I'm not doing more conversions, I'll set it back to utf8mb4. Until the conversions are done, I'll be alternating between making the charset utf8mb4 and not making it that, and some non-ASCII strings will look weird. When it's all done, I'll set the charset to utf8mb4 for good, and all non-ASCII text should look correct.
So far, I have fixed the names of inventors and authors, and I have started on other names. But I stayed on the computer so long that artifacts have started floating in front of my eyes. So I'll have to get back to this later.
I now have a plan for automating the rest of the conversions. In a test, I opened two PDO connections, one with charset set to utf8mb4 and one with it not. I read a column with it not set, and I updated the same column with it set. Doing this corrected it just as if I had cut and pasted the correct version. I don't want to stay on the computer much longer tonight, but I can write a script tomorrow that uses two different PDO connections to automatically convert the database strings to proper Unicode.
The server was acting as though there was no space left today and yesterday. I programmed Game Courier to halt the saving of logs if this happened again, but maybe it didn't work. I'm shutting down my computer for tonight, but I'll look into this more tomorrow.
They all have the same timestamp of 6/16/2018 10:39:26 PM. I think timestamps are given in GMT. So, this would be around 6:39 PM EST on Saturday. Given that the timestamps are exactly the same, this was all done at once, and the error checking I had in place wasn't enough to stop the saving of logs. This involved using file_get_contents on the newly written file and checking whether it was empty or didn't match what was written. I am also now using filesize, and if either one fails, it should stop before it rewrites everything as an empty file.
However, now I see what may be the problem. It first checked the value of file_put_contents, and if this failed, it gave a warning instead of a fatal error. I am now making this into a fatal error that exits the script.
I made a backup of the site last month, but your Frog Chess log was too recent to be included in it. I also made a backup yesterday, but that was too late. This log is unrecoverable, but you can start the game over. According to the database record I just deleted, your opponent was wdtr2.
While looking at the Japanese Chinese* Wikipedia article on Shogi, I came across this line:
4. 步兵打入時不能立刻將死對方,這一種犯規稱為打步詰;反之若不會立刻將死則不犯規,此稱為打步將。
Google translates this as:
4. Infantry can not be killed immediately when the player enters , this type of foul is called a stumbling ; if not, if he does not immediately die without fouling, this is called a stride .
This appears in the section called "Eat and Enter," which is about restrictions on drops. Despite the bad translations, the first three appear to be 1. You cannot promote a piece while dropping it. 2. You may not drop a piece where it would have no possible legal move. 3. A Pawn may not be dropped on the same file as another Pawn of the same side.
By process of elimination, the 4th might be the rule against checkmating the King with a Pawn drop, but the translation seems to be saying that a Pawn may not be captured immediately after being dropped.
Also, the translation of the 3rd seems to describe a different rule. It says, "Infantry can not be entered in the way of existing (not upgraded) infantry. This kind of foul is called two steps ." Since it would be in the way only if placed in front, this seems to allow the option of dropping a Pawn behind another Pawn in the same file. Maybe it is just a bad translation. The original says, "步兵不能打入於已有己方(未升級的)步兵的一路,這一種犯規稱為同筋二步。"
* I just noticed the zh in the URL. That means Chinese.
This is also the first book I read on Chess variants. I liked how it focused on clearly describing the rules of several games. It started my interest in the subject, though it remained a passing interest until computer software provided the opportunity for playing Chess variants.
While checking the error logs this morning, I came across errors in index/tagsinfo.php. It is accessing both the TagDetails table and the Tags table. The Tags table is something I recently started, and the TagDetails table is something that someone else (Ben?) had started previously. I notice it was last updated today. So, someone is still working on this. In the database backup, there are some old tables called TaggedItems and Tags. It looks like maybe I renamed Tags to TagDetails, got rid of TaggedItems, and started a completely new tagging system with a new Tags table. The current Tags table is unrelated to the old one, and it has no connection with TagDetails. The current Tags table is a many-to-many table of user-created tags, and each tag is just a string, not something with a description or an ID. This implements an open-ended system for allowing users to add any tag they wish to any page.
It looks like the original tables for tags were trying to implement a closed system of select tags. I'm not sure if they were meant only for editors to add or for anyone to add, since the code never got that far.
I have been thinking of using tagging to better organize the pages, but this may involve making tags less open than they are right now. Any thoughts on how this could be done?
Anyway, when someone else is coding something here, I need to be updated on what is going on. This will help keep things coordinated.
Where there is an entry for the tag in tagDetails, it would be helpful to include the tagSentence after the name of the tag in this list. This will help people better understand what each tag means, and it will let us know which tags still need descriptions.
I would like to avoid cryptic tags. These tags are meant to be read by people, not simply by machines. Generally, the tag alone should be enough to inform someone what it means. The "shape:board" tag is cryptic. Every board has a shape. Something like "Unusual Board Shape" might work better. Phrases would be less cryptic than using a colon between two different words. Also, I'll be using a colon in the pseudo UserIDs for tag pages. This is partially in the works, though more needs to be done.
I have changed the collations in the tagDetails table to utf8_general_ci, and I have extended the size of the tags to 64 to match the size in the Tags table.
Fixed. Next time, post your bug reports for Game Courier in an appropriate section.
I fixed a problem with parsing semantic URLs. It was expecting complete words without spaces, which wouldn't allow for phrases. I changed that. Now, a semantic URL like http://www.chessvariants.com/tag/Chess+Cubed will work. However, the CSS is not working for http://www.chessvariants.com/tag/Chess+Cubed/. I think it interprets this as another directory level. Instead of using "../g/", using "/g/" should fix that.
I was thinking of URL encoding the semantic URLs, but I noticed that Chrome was doing it automatically when I clicked the link. I'm not sure how universal this behavior is, though. So I have urlencoded them anyway for safe measure. I decided on urlencode() rather than rawurlencode(), because plus signs look cleaner for spaces, and the choice had no effect on whether your chess+compounds tag would work. In every case, whether I used urlencode(), rawurlencode(), or left it unchanged, it didn't work. So, plus signs should be avoided in tags.
It's also time to change the tag links on this page to semantic URLs. The code I'm using in the footer for a tag URL is this:
printf ("<A HREF="http://www.chessvariants.com/tag/%s" CLASS="tag">%s</A> ", urlencode($key), $key);
Note that $key happens to be the tag in this line of code, and you might be using a different variable for it.
Maybe using urldecode() in taginfo.php will allow tags with plus signs.
Using underscores for spaces is not an option. The only two options are + used by urlencode() and %20 used by rawurlencode(). When a plus sign is part of a tag, it gets converted to %2B. The raw URL works with this, but the semantic one does not. Using urldecode() on the tag value should fix this.
I like the idea of being able to tag tag pages. Different tags will be appropriate for different kinds of pages. For example, a meta tag like "Object" could be suitable for particular tags like "Won by Checkmate", "Won by Capture", "Won by Stalemate", "Won by Total Elimination", "Won by Winning Race", etc. This is more flexible than giving something a parent tag, since it allows particular tags to have multiple meta tags.
We need to give some thought to what tags we will use. We can use the categories in the Item table as guidelines. Some of these categories are good, but there are some things I have wanted to change about them. In particular, there are a bunch of categories that are intended to imply a game played with the usual equipment, yet they would also be useful for games that are not played with the usual equipment. Using the What is a Chess Variant? page as a guide, we could use tags that indicate various ways that a game could deviate from Chess, and sometimes tags for how a game is similar to Chess. A tag such as "Playable with a Chess Set" may be suitable for games played with the usual equipment. But it might be overkill to include tags for several features common to Chess, such as "Won by Checkmate", "Normal Castling", "2D", etc. Tags such as these would cover most of the variants on the site, which would make them less useful for navigation. "Playable with a Chess Set" is useful though, because it is more narrow than these, and sometimes a Chess set is the only equipment someone has for playing Chess variants.
While it's more flexible, tagging tag pages would lack one feature of using a tagParent. With a tagParent, the parent tag might be included on any page that includes the child tag. For example, if "Different Object" were the parent of "Stalemated player loses", then "Different Object" would automatically be added to any page with the "Stalemated player loses" tag. This might be desirable, though it could also lead to too many tags on a page. As a tag on the tag page, "Different Object" would appear as a tag in its tags section, and people could follow it to find tag pages for different types of object.
Here are some possible tags I have thought of.
- Different Pieces
- Compound Pieces
- Hopping Pieces
- Novel Pieces
- Supernumerary Pieces
- Neutral Pieces
- Move Opponent's Pieces
- Multi-Move
- Double Move
- Move Multiple Pieces
- Different Board Rules
- Cylinder Board
- Torus Board
- Vanishing Spaces
- Movable Spaces
- Different Object
- Stalemating Player Wins
- Checkmated Player Wins
- Lose All Pieces to Win
- Capture Piece to Win
- Eliminate Type of Piece to Win
- Random Setup
- Free Setup
- Alternate Setup
- Captured Pieces Change Sides
- Drop Captured Pieces
- Exchange Captured Pieces
- Promotion Only to Captured Pieces
- Absorb Captured Pieces
- Pieces May Combine
- Pieces May Split Apart
- Non-Standard Capturing
- Small
- Large
- 3D
- 4D
- Hexagonal
- Round
- Unusual Board Shape
- Cards
- Dice
- Three-Player
- Four-Player
- Multi-Player
- Based on Shogi
- Based on Xiangqi
- Oriental
- Historical
- Chinese
- Japanese
We could also include tags for specific pieces, particularly the popular fairy pieces, such as Cannon, Vao, Mao, etc.
I temporarily altered taginfo.php to test some things, and I found out that even if I have it print $_REQUEST or $_GET as the very first thing it does, it has already converted the %2B to a space. An additional urlencode will not help, because the problem is that "chess%2Bcompounds" has already become "chess compounds". It must be that the apache RewriteRule command, which is used to create the semantic URL in .htaccess does URL decoding on its input. What works is to replace %2B with %252B. %25 is the code for the % sign, so that this converts to %2B, which will then convert to +. What fixed this is to use str_replace() on the output of urlencode(), like so:
str_replace("%2B", "%252B", urlencode($key))
Right now, tags are allowed to be in UTF-8, which would allow for foreign language tags. This could make conversion to pseudo ItemIDs difficult, especially if someone uses all Chinese characters or something. Also, foreign language tags would be harder to vet. So, I'm considering the idea of requiring tags to be in ASCII, which is what all ItemIDs are required to be in.
Let's first look at how much can be said in 64 characters. This is less than half the size of a tweet. Looking at the tags I came up with earlier today, the longest is "Promotion Only to Captured Pieces" at 33 characters. If I changed that to "Promotion Only to Captured Piece", I could make 32 characters the maximum length for a tag. Sometimes, the tag itself will be self-explanatory. Let me look for an example where longer descriptions will be helpful.
Non-Standard Capturing
Longer: Capture by means other than displacement or en passant. (90 characters)
Full: Apart from en passant capture, pieces in Chess capture by displacement. This involves moving to the space the piece is on and taking its place. In a way, en passant is a variation on capture by displacement. It involves moving to the space the captured Pawn would have moved to if it hadn't been allowed a one-time double move. The rule of en passant capture effectively allows the normal capture of a piece that was granted a special move. But capture by displacement and this variation on it are not the only ways pieces can be captured in games. Checkers capture other checkers by jumping over them. In games like Ultima and Rococo, pieces capture by a variety of different means, such as moving one space short of a piece, moving away from a piece, surrounding a piece on two sides, leaping beyond a piece, and forming geometric arrangements between pieces. These are just some examples, and you will find other means of capturing pieces in other games. This tag is for games that allow capture by any means not employed in Chess.
Non-Standard Capturing is still a bit vague. "Different Means of Capture" is more precise, and I could add "Different Outcome of Capture" for games like Shogi.
Let's think about the difference between categories and tags. In my Wordpress blog, I use both. Categories are fewer in number, and they tend to be mutually exclusive, though it doesn't always work that way in practice. I can assign multiple categories to a post, and I sometimes do, but there is the general intent that they should be exclusive of each other. The tags on my blog are more particular, and the same posts may have multiple tags without it being an issue.
Last.fm seems to use tags rather than categories to organize its site. I can go to an artist page or an album page and add tags. Many of the tags on last.fm are genre tags, and it makes sense to allow users to enter tags, because genre is something of a subjective matter, and different people sometimes organize the same music into different genres. By recording how multiple people tag artists and albums, they can show the most popular tags and usually get the genre correct without having to hire staff members to meticulously go through all the music there and place each artist or album into the proper genre. They also allow members to edit the text of tag pages, so that we can get descriptions of the genres people tag various music with.
The tags that are appropriate for Chess variants are usually less subjective than genres. Tags about ways in which games are different from Chess usually convey objective facts about these games, not merely subjective opinions. But people could use them for subjective opinions too.
One difference between categories and tags is that categories should be exhaustive, while tags don't have to be. For example, we have an Other category, but it would not make sense to have an Other tag. With tags, we could shift the emphasis from an exhaustive categorization of games to tagging how various games differ from Chess. With the exception of games playable with a Chess set, the general idea would be to assume similarity with Chess except when differences are tagged. The tagging system is also more open-ended and flexible than the categorization system. Anyone can add a new tag, but to add a new category, someone has to edit the structure of the Categories column in the Item table, then update some scripts.
The options before us are
- To use both categories and tags and figure out how they can work together.
- To improve the category system and forget about using tags.
- To replace the category system with a tag system.
It may be suitable to begin many tags with the word different. Here are some we could have
Different Pieces - A tag for games that include pieces not used in Chess
Different Powers of Movement - A tag for games in which some Chess pieces move differently than they do in Chess.
Different Board - A tag for games played on something other than the 8x8 Chess board
Different Board Shape - A tag for games whose boards are not squares, rectangles, or parallelograms
Different Cell Shape - A tag for games played on boards whose spaces are not squares
Different Topography - A tag for games whose boards are not merely 2D grids of spaces, including circular, cylindrical, torus, and multi-dimensional boards, though not boards that merely differ in cell shape.
Different Rules - A tag for games whose rules differ from those used in Chess
Different Manner of Setup - A tag for games that do not begin with all pieces on the board in fixed positions
Different Means of Capture - A tag for games that allow capture by means other than displacement or en passant
Different Outcome of Capture - A tag for games in which capture has other effects than merely the removal of the captured piece from the game.
Different Winning Conditions - A tag for games with different winning conditions than Chess.
Different Draw Conditions - A tag for games with different drawing conditions than Chess.
Different Kinds of Equipment - A tag for games that use equipment other than a board and pieces.
Different Number of Players - A tag for games played with fewer or more than 2 players.
Some of these might not be necessary and could be replaced with more particular tags. For example, "Multi-Player" probably works better than "Different Number of Players." For one-player variants, we could use a "Solitaire" tag, and that covers all possibilities for this one. Some of the most broad ones might be used to consolidate groups of more particular tags instead of being used for the games themselves.
Bringing together the two things I was getting at, categories should be exhaustive and mutually excusive, but tags don't have to be. A book I'm reading on SEO points out that categories should be used for important parts of site structure. When this site began, it was all HTML pages, and each page had to go into a particular directory. Given that we had to place each page somewhere, categorization made sense. But now that we have lots of content in the database instead of in HTML files, finding a particular place for each page is no longer as much of an issue. So, instead of organizing the site around the site structure, we have the opportunity to organize it around the nature of Chess variants. It's hard to come up with a strict categorization of Chess variants unless we make it about just one feature. For example, Chess variants could be categorized by their number of dimensions. If we wanted to categorize by cell shape, as well, we may start to have problems. A 3D game could use hexagonal cells, for example. If we use categories, what we find is that various Chess variants will fall into a variety of different categories, and some that fall into some of the same categories will also fall into different categories. There seems to be no easy way to sort or arrange Chess variants by categories. Instead of falling into strict categories, Chess variants differ from Chess to varying degrees and in different ways. So, it seems more natural to organize Chess variants around the ways they differ from Chess and around some other salient features than it does to try to strictly categorize them all. A tagging system works better for this than a categorization system. What I propose, then, is to use the existing categories for automatically generating some tags, then use tags rather than categories.
The main drawback I see to this is that categories are stored in the database much more efficiently than tags are. To find out the categories for a page, we just have to check one column in one row, but to find out the tags for a page, we have to find every row for that game in the Tags table. Additionally, if we allow public tagging, this increases the number of rows for each page. However, it isn't necessary to search the whole table, since the use of indexes narrows the search to just the rows we need to find.
One option is to repurpose some of the categories and add new ones, using them to note various ways in which games differ from Chess. This would make categories the main way to organize the variants, though they wouldn't work like strict categories. This would be more efficient and uniform than using tags, but the use of tags could give people more freedom to organize variants in ways that make sense to them. For example, people might want to use tags for family relations between games, or inventors might want to organize their games around different categories than the ones we've chosen to use. So, while tagging is less efficient and public tagging will lack uniformity, it does offer some advantages.
I'm not sure how we could use both categories and tags to organize the site. It seems like there would be a lot of overlap between how each got used, and there doesn't seem to be need to have both. Some of the advantages of tagging could be had by reworking the categories, but switching to a tagging system could offer other advantages besides these, though there would also be a cost in performance.
Where I used to use /invention/ for games described by their creators and /report/ for other games, I am now using /rules/ for all game rule pages stored in the database. Semantic URLs with the pseudo-directory /rules/ will now appear on this site instead of these. But in case you used /invention/ or /report/ URLs in hardlinks or on another site, the /invention/ and /report/ URLs will still work. They are just deprecated now.
This is done in conjunction with generating XML sitemaps that include all indexed pages that are not hidden, deleted, or reported to have broken links. Note that the sitemaps are for robots and spiders, not for public view.
From examining the logs, the database, and the code, it looks like you issued some as open invitations, though you used his userid each time. While it should be possible to issue an open invitation to any email address, it doesn't make sense to issue one to a userid. I just added some code to close this loophole. It will now set the invitation to personal when the invitee is not specified by email.
As the owner of the site, I have access to the data Google Search Console provides on this site, making me the one best qualified to follow up on it. I currently have my hands full going through a long list of URL errors for the site. The easiest to handle are 404 errors caused by the site going down for a while. In these cases, I just have to confirm that the page exists and mark it as fixed. But sometimes I have to restore a lost page, change links to a page, or set up a redirect to a page. While I'm busy with this, I'm hoping other editors can handle the submissions to the site.
In handling these, here are some guidelines to follow.
- DO correct spelling and grammar.
- DO edit link text to clearly indicate where the link is going. Avoid link text like "Click here" or "this". Use descriptive link text like the name of a game, a person, or a website.
- DO NOT correct pronouns by making masculine pronouns more gender-inclusive.
- MAKE SURE that any descriptions of games provide clearly and completely all the information anyone needs to play or program the game. Before approving a submission, ask the author any questions about anything you need clarified, and make sure the rule descriptions are not ambiguous or incomplete in any way.
- REQUIRE diagrams for any game that does not use exactly the same setup as Chess.
- PROVIDE Piececlopedia links where appropriate.
Since this comment is for a page that has not been published yet, you must be signed in to read it.
The table_row(), table_rows(), and get_field() functions can now recognize the "%" wildcard used by LIKE, and if found, they will use LIKE instead of =. This is now being used on the 404 page to help find the page the person was trying to get to.
Take back your illegal move first. Otherwise, it will break your game when I fix this.
Castling is now fixed in the Janus Chess preset.
Maybe that is why promotion is still only to Chess pieces. Queens, Rooks, and Bishops are better at checkmating in the endgame than Leos, Paos, and Vaos are.
I was wondering about that too, but I recalled that Chess pieces are also called Chess figures, because the pieces are usually figurine. I did a search for "chess figure," and the top results are for chess piece. So, he probably means that the Pawn promotes to another piece. But nothing is lost if he means something else, since it's just an example of a rule someone could come up with, not an actual rule of the game. This is not the sort of game that can be programmed, but that is okay. Some games are like that.
This is an old game of mine. For some reason, it was unindexed, and the links needed to be fixed. I fixed the links and added it to the index. I also extended the disclaimer to include a company using the name Sentai.
It looks like the log was deleted. There is no entry for it in the database, and all that is left is the backup. You can ask per31 if he deleted it.
I added LANG="zh" to the BODY tag, and this allowed Google translate to work. I skimmed over the text, and it looked like a translation of my Shogi page. So I added myself as an author. However, it now looks like the title got screwed up when I did this.
I got the original title from Archive.org and added it directly to the database. Before doing that, I tried the edit form again. The title looked fine there, and when I saved the form contents, it still looked bad on the page and in the database. I tried it again, this time pasting the title I got from Archive.org, but I got the same results. So I pasted it directly into the database, and that worked.
This page had the anchor tag broken between two lines, and it had "uses html" unchecked. I just changed what happens when this is unchecked the other day. Instead of putting PRE tag around the whole thing, it now puts P tags around each line. This gives a better appearance than putting all the code in a monospace font. Since the link was on two lines, this interfered with the HTML for the link. I fixed this by checking the box for using HTML.
I also made the link relative. Although links to the play directory will redirect to the play subdomain, links to pages in the play subdomain should be stored as relative links in the database. Besides that, preset pages should be treated as link pages. When I changed the link, it stopped displaying on the page as though this were an external link page.
I want to note some changes in how user-submitted pages are displayed. Instead of relying on the value of the UsesHTML column, it will check whether the text to display contains any HTML tags. It does this by stripping the HTML tags from a string and comparing the result with the original string. If they are the same, it doesn't contain any HTML.
The absence of HTML was previously handled by wordwrapping the text and putting PRE tags around it. But it is now handled by placing each separate line inside of a P tag. If you mean to use ASCII art on a page, you should add the PRE tags yourself.
If you use CKEditor's WYSIWYG mode, it will automatically add HTML code to your text. If you use Source mode, you will need to enter any HTML yourself. If you do not enter any HTML, then write each paragraph as a single unbroken line, and put an empty line between each paragraph.
I came across this page because another page was trying to link to it with a bad link. While here, I noticed that it looked a mess with its Javascript graphics that used a separate image for each space. I replaced these with single images for each diagram, I edited the text, added new questions, and fixed the formatting so that the three cells in each table row will display vertically on mobile devices but still display horizontally on desktops.
I also meant to mention that I disabled the code for adding the vertical box that displays the table of contents and other info. When the early sections are short, this makes the page look bad by pushing down the start of the next section. It can also get in the way, and the information it displays is either elsewhere or not that critical. Most of the time, it is easy enough to page down to see what's on the page, and most pages aren't so long that relative links to page sections are of much help.
I renamed the backup to a php file, and it is currently your opponent's turn. Once he moves, the database entry will be recreated, and it will show up on the logs page again. Since it is not showing up there now, inform your opponent that he has to repeat his last move for the game to continue, and send him a link to the log.
I noticed the old diagram positions started from illegal positions. I fixed that by creating new diagrams that use legal positions.
I ran some tests on a test submission without corrupting it. I then backed up this one and edited some links on it without it getting corrupted. The database backup indicates that the corruption of this submission happened back when the MemberSubmissions table was still using the default latin1_swedish_ci collation. It looks like the use of the utf8_general_ci collation has prevented the contents of this page from being corrupted again, and it looks like CKEditor is not doing anything to corrupt the text.
If you append &submit=Edit to the URL, it will open up in Edit mode without trying to run the code. Both settings files are by Joe Joyce, and in each case, all he did was copy over the code for Chess without adapting it to these particular games. What the error message is complaining about is a line in which a function name is contructed from a piece name, but that function doesn't exist. The piece is identified by the label BI, and it looks like a bird. The particular function that the error message says is missing is one that would identify all the spaces this piece could potentially move to. But more functions that just this are missing. These games replace most of the Chess pieces with other pieces, and there is no code for these pieces. The required code is a set of functions for testing whether moves made by these pieces are legal, and a set of functions that indicate a set of spaces to check for potential legal moves. The former should be named after the pieces, and the latter should bear the names of pieces with L appended to the end. The BIL function would be one of this sort.
That's correct. Game Courier expects your UserID, not your PersonID.
I just corrected a link, but before submitting it, I updated the script that lets editors update submissions to update the ModifiedDate for the submission in the Item table. So, you will see a lot more updated files as I correct links here and there. I am doing it this way, because submissions stored in the database do not have file modification dates, and if I don't update ModifiedDate in the database, the data on the submission in the sitemap will be out-of-date and inaccurate. So, updating the ModifiedDate in the database will let Google and other search engines know that the submission has recently been updated, and this should keep search engine records more up-to-date.
This page has a link I couldn't correct. I changed the HREF to a TITLE with an explanation about the missing link. The link text is hybrid piece.
The page includes lots of ugly and hard-to-read ASCII diagrams. These are best replaced with graphic diagrams made with the Diagram Designer.
The page on this text had been corrupted, but using an older copy on Archive.org, I copied the Russian text over and saved it as a Unicode file.
I just came across this page today. This appears to be an update to our other page on Korean Chess but with traditional piece images used instead of Cazaux's westernized graphics. I am now working on consolidating these two pages, and since the other one is the one that comes up when you do a Google search for Janggi, the updated page will go in its location, and I will remove this page when the update is done.
I just tried it, and it repeatedly sent me to Chess++. Switching browsers to Firefox, it started repeatedly sending me to Shifting Chess. I think the issue is with page caching. It might be because this site uses Cloudflare for DNS, which offers page caching. But if that's the case, I might expect the same page to show up for different browsers, which is not happening. So, it might be browser caching. I can probably fix this by appending a uniqid to each link to the random game script.
Adding a uniqid to the script's URL has fixed the problem, but I'm going to look into how I can finetune caching with .htaccess.
Images made with the diagram designer will now have smaller file sizes when the color count does not exceed 256. Although the script was outputing images with larger color counts as JPG, and it was outputing smaller pallette images as PNG, it was still outputting the PNG images as true color images. I modied the script to output PNG images as small pallete, and I modified it to use the greatest amount of compression when outputing a PNG. In a test I ran, an image that was originally 12.7 KB got reduced to 7.66 KB by changing it to a small pallette image, and it got further reduced to 6.43 KB by maximizing the compression. In another test I ran, I compared the file size to that of an image I had already reduced the file size of with Ultimate Paint. With its file size optimized with Ultimate Paint, it had been reduced from 12.9 KB to 6.6 KB, but the improved script now outputs the same image with a size of 6.57 KB. This means there is no longer any need to reduce the size of the PNG images created with the Diagram Designer with some other program. Note that this affects all diagrams previously made with the Diagram Designer, since the changes were to drawdiagram.php, the script that draws the images, not to diagram-designer.php.
Since /indexmaint/modifyitem.php wasn't updating the Whatsnew table, I rewrote it. First, I added some new functions to database-funcs.php called update_row() and replace_row(). I then used these functions, as well as the table_row function, in modifyitem.php, which made the code much simpler.
It turns out the problem wasn't missing. The FFEN code for it was in the call to a JavaScript script for displaying the board, but it wasn't working. I adapted it to the FEN code used by Game Courier and entered the solution into it.
It looks like you're right about the Cannons. I have been running Zillions-of-Games with a King and two Cannons for White and only a King for Black. Having finished something else I was working on, I just remembered I had it running, and it is has gone for nearly 600 moves without checkmating the King, which is well over the 50-moves limit.
I have been letting Zillions-of-Games run with two Knights and a King for White against a lone King for Black, and it has played over 200 moves so far without a checkmate. So, it's not looking good for this combination of pieces either.
This tool is no longer being used on any page, and it has been made obsolete by the Diagram Designer. I am leaving this note to explain why it's gone on the 404 page that will show up in its place.
While it is plausible that Koreans, or in this case Sillans, originally played the game with Chinese equipment, Hwarang was not a drama that made any effort to be historically accurate. Using a board with a river might have just been an oversight in the production of the show.
I left Zillions-of-Games running again, this time with a Knight, a Vao, and a King for White against a lone black King. I then forgot about it until I was ready to turn the computer off for the night. I just stopped it on turn #1986. So, clearly, a Knight and a Vao are not sufficient mating material.
I based my original judgments on whether I could conceive of checkmates that used the pieces in question. For example, if the Black King were on a12, the White Vao was on the diagonal for that space, say at h6, and the White Knight moved to c10, that would be checkmate. The difficulty is in getting the lone King to stay in a corner where it can be easily checkmated in this way. I'll have to run more trials with Zillions-of-Games to see what combinations of material can actually force checkmate.
I just compared this page with Roleigh Martin's article, highlighting any text I found to be the same. It looks like Martin is the principle author of this page, despite his distribution policy that his article should not be altered. I have a new version of this page in the works, which I'll replace this page with when it is in a more finished state.
I had insomnia last night and noticed the same thing on my Kindle Fire. The comments page and the index page were both blank, but the Play subdomain displayed fine, and when I tested HTML pages, they showed up without the header but with the footer. In the morning, things were working again. I checked the date on the header script, but it hadn't been modified for a few days. Checking the error logs for PHP, I saw a mention around the time I was up of being unable to write an SQL file. I don't know if that's related.
I have just uploaded a major update to this page. While there is still more work to do on it, it seems to be in a mature enough state to replace the previous page.
In case you weren't aware, the section headed "Rules, Written in HTML for Players to Read:" is supposed to contain a written description of the rules, not a link to a rules page.
Other people doing it wrong does not set a precedent for anything. The area for writing a brief description of the rules has always been for that purpose alone. There is already another field for entering the URL for the rules page.
The textarea in Edit mode that it titled "Rules, Written in HTML for Players to Read:" should be used to provide a brief description of the rules that players can consult without looking at the rules page. It should not be used simply for providing a link to the rules page. There is already a Rules URL field for that.
The main page for Korean Chess has now been updated. Since this page was just an updated version of the other, and since both used large portions of text from Roleigh Martin, I mainly just updated this page and moved it. I ended up replacing Martin's text with my own. This page will now be deleted.
This page could use graphics instead of ASCII art.
For the sake of consistency, I'm looking into using a Google web font for the menu instead of fonts on computers. I previously had it set up so that on my desktop, it would use Segoe UI, which comes with Windows. I checked out some Google web fonts today, and I narrowed the choice down to Noto Sans, Open Sans, Roboto, Signika, Source Sans Pro, and Tauri. Here is a graphic image showing all of these plus Segoe UI being used for the menu for the homepage. I wrote the name of each in Segoe UI with the graphics program.
I'm trying out Noto Sans and Noto Serif as the two main fonts used by the site. They look fine on my desktop, but when I have tried my Kindle Fire and my iPad, I have been unable to reload the CSS to see what these look like on these devices. While my desktop browers make this easy, the same browsers on mobile are less functional. Maybe I'll try downloading a new brower I haven't used before.
I installed Opera to my Kindle Fire, but it didn't help. It is still showing Average, Kurale, Volkhov, and Catamaran instead of the Noto fonts. I may be dealing with caching at the DNS level. I could try creating some test files that don't use the cached files.
It's not showing up as active on the Logs page. It says you won.
I created a test file and previewed the Noto fonts in action. They look fine on mobile, which is not too surprising, since they are based on the Droid fonts, which were designed for mobile devices. On the desktop, Noto Sans looks fine, but Noto Serif looks a little too large. As I was looking over the sans-serif fonts, I settled on Noto Sans, because it put bars on the capital I and generally looked good. It is also part of the Noto series, which has been designed to support more languages than any other font. I thought it would be nice to use matching serif and sans-serif fonts, and Noto Serif is a good font in many respects. It also includes a real italic. The Average font came with only one style, and I was using the Kurale font to handle its italics, since it's a more italic looking font that otherwise resembles Average. When it comes to Chinese characters, Noto Serif looks better than Average, though I still like how Average+Kurale looks on the desktop, and I still like how Volkhov looks on mobile. I'll go with Noto Serif for now and continue looking at other fonts.
On my phone, Noto Serif is looking better than Volkhov.
For now, I have gone back to using Average, Kurale, and Volkhov for the body text. I'm looking for a single serif font with its own italic style that I could use for the body text on both desktop and mobile. When I have the time, I'll try out Lora, which is by the same designer as Volkhov.
I plan on removing the scripts for creating FFEN diagrams once they are all converted to single images with the Diagram Designer. I have already removed the scripts for FFEN Xiangqi diagrams.
In order to make conversion of FFEN diagrams easier, I recently modified drawdiagram.php to recognize periods in the FEN code. A single period indicates a single empty space, as it does in FFEN diagrams. Unlike the number 1, which would indicate too many spaces if repeated, the repetition of a . just means one more empty space, not ten more or 100 more, etc.
This site now uses Lora for body text and Noto Sans for header and menu text. These are both free web fonts available through Google fonts. I purged the global CSS files from the cache, which allowed me to see changes to them on mobile devices. I increased the font size on mobile devices to 18px, matching what it is on desktops, and I set the size of blockquote text to 16px, which seems a bit more legible than using smaller.
To accomodate older mobile browsers that cannot be updated, such as the browser on my Kindle Touch, I replaced the table that gets turned into a flexbox at narrow widths with a simple flexbox. On browsers that do not support the current flexbox stylings, the diagrams will just display one below the other, which is how they should display on mobile devices. On the desktop, people have more freedom to use an up-to-date browser, and assuming one is used, and the window is widescreen, the related diagrams will show up side-by-side in a single row.
One reason to format a page for mobile first is that browsers on old mobile devices cannot be updated as easily as browsers on desktops, leaving some mobile browsers without the functionality of the most up-to-date browers. So, if the default formatting is suitable from a mobile device, it will look right even if that browsers is not up-todate. With that in mind, I replaced the tables used to display three diagrams in a row with flexboxes that will display them in a row only on browsers with up-to-date flexbox capability and a wide-enough screen to display them in a row. On older browsers or on smaller devices, it will display them in a column.
The previous change I made to increase compatiblity with FFEN is incompatible with a change I previously made. That change was to use . for border colored dots and ! for text colored dots. The . for border colored dots works if you enclose it in braces, and the ! for text colored dots still works normally. The reason for this, and the reason I didn't catch it earlier, is that these are handled in two different parts of the code. To use periods in the same way that FFEN does, it catches a period when populating the board and inserts a @ to represent an empty space. When actually drawing the board, it interprets a period as a border colored dot. The problem is that now, a period in the FEN code does not get inserted as a period in the array representing the board unless it has been enclosed in braces. I'm going to keep the use of the period for empty spaces, and I will use the # sign for border colored dots. These dots are for use in movement diagrams. Note that these will be overridden if a set uses these punctuation marks to represent pieces.
Besides using # and ! for border-colored and text-colored dots, it will now use numbers to specify dots in the color of one of the colors listed in the colors field. This field is normally used for coloring the spaces of the board, but it may be expanded beyond the colors needed for the board. On a regular checkered board, the two colors of the board will normally be 0 and 1, and the next color will be 2. You can set 2 to whatever color you want, then insert {2} in your FEN code to display a dot of that color. Since numbers are normally used to indicate a number of empty spaces, any number used to designate colors must appear inside braces. This lets the number be used as a label instead of information about the number of empty spaces.
Until now, the FFEN tool and the Diagram Designer shared a common limitation. Neither one could show capture moves by placing a dot over a space with a piece on it. I have now fixed that for the diagram designer. Enclosed in braces, write the index of the color, a space, and the label for a piece. For example {2 r}. This will draw that piece on the space with a dot over it in the color with that index. So, if you include 3 colors in the colors field, 2 will be the index of the third color, and a dot of that color would be placed over black's rook.
I do not speak Russian. If you speak English, it would be best to use English. You cannot move in a game until it is your turn. I have added lang="en" to the page so that Google translate will know what language to translate the page from.
Я не говорю по-русски. Если вы говорите по-английски, лучше использовать английский. Вы не можете двигаться в игре, пока не настает ваша очередь. Я добавил lang = "en" на страницу, чтобы Google translate знал, на каком языке для перевода страницы.
I think he is honestly trying to play the games, but he doesn't understand how things work, because the site is in English. I'm hoping that Vitya Makov can step in and explain how things work to him. I've also noticed that his userid begins with a capital letter in the Person table, but it is all lowercase in the GameLogs table. I wonder if this is causing some bug that prevents him from moving.
That is an example of rule enforcement. You are being required to make a legal move.
If you think the move you tried to make is actually legal, let me know which log you got this error message for.
98 comments displayed
Permalink to the exact comments currently displayed.
The former was removed when you successfully changed your email address. The latter has nothing to do with email, and it is standard for all registered users.