I finally decided to sit down and learn game development. From my research there is only one way to do it, and that is SDL. If it’s good enough for Valve and Steam, it’s good enough for me. As it turns out, it’s surprisingly easy to get up and running with SDL. There are plenty of tutorials about the basic SDL game setup, so I won’t repeat the ubiquitous info and go straight to some basic problems of making a game that no one really seems to discuss. There are two main problems when designing a game: How do I save and restore game state? How do I make my game configurable? C is a great language for speed and algorithms, but it is really shitty when you want to handle data. Games are both algorithm and data intensive. So for half the game development, C rocks. But for the other half, it’s a slog. Saving and restoring game state means populating a structure in your C code with values from a human editable, dynamically loaded file. Things like the x,y or even z coordinates of the player in game space, their health, equipped weapon, inventory items and so on. One solution for solving this problem is to use some kind of config file format like INI, or XML. INI is a good choice for very simple games, and it’s dead simple to write an INI parser in C. The other common option is XML, which means something like libXML, which means I’d rather have […]
Elite: Dangerous is an ambitious game, and on the whole is very well done. Though I would say it has been and continues to be plagued with a number of unfortunate gameplay killing problems, I expect that most of them will be taken care of post-haste. Games generally have two major problems, both are the game designer/programmer/producers fault: Buggy Client/Server The first kind of problem is the buggy client or server, but this is a fault which we can’t really hold against them, because it’s not like there is some cadre of developers twisting their mustaches and laughing about how often the client or server goes down or disconnects. It’s irritating, but generally the pleasure gained playing the game while it’s working can offset this problem. There is also the issue of being an early adopter of a game, the sooner you get in, the more money/power/respect you’ll build up in the game so coping with the growing pains of the client and server as well as the game has its benefits. Shitty Gameplay The other problem a game can have is shitty gameplay, which is a rather broad category which spans from irritating mechanics all the way up to “you’ve got to be fucking kidding me.” While Elite:Dangerous seems to have minimized any serious fun killers, there are a few mechanics which just piss you off to no end. When you couple these issues with the fact that if rand(10) < 5, the server randomly disconnects, or crashes, especially while in SuperCruise, HyperDrive, […]
I’ve been thinking about this problem for awhile, and I have an idea of one of the major factors preventing LISP adoption: EMACS. Emacs is, well, complete shit. Vim is also shit. They are the awesomest pieces of shit ever. There are people who love EMACS, and people who love Vim (I like Vim actually), but everyone today uses a real IDE, like Netbeans (I hate it) or at least SublimeTEXT(I love it). The truth is, you can use something like SublimeTEXT with SublimeREPL plugin and get interactive scripting behavior. So how is EMACS a barrier? Because when you are a newbie to LISP, and you go looking for information about LISP, the first thing everyone says is: Install EMACS. Most newbies stop reading there. “To hell with that!” they say. EMACS is one of those editors that was a really great idea, 20-30 years ago when computers were way different. The problems that they solved are barely relevant today. No one uses Macros, no one needs weird navigation with the keyboard. A modern IDE needs clickable tabs, not confusing buffer lists, they need file system tree displays, and project management functions built in, not from some confusing 3rd party lib. The features an IDE must have: Tabs Split Layout PRegex Find and Replace Highlighting and indenting The features that are nice to have: Column Select Plugin Architecture Most modern IDEs have all of these, and more. So if you want to learn LISP, forget about EMACS, EMACS sucks, it sucks clown shoes. People who […]
LISP is the perfect programming language. It is so perfect, it is shit. Well, okay it is not shit, it’s awesome, but when you first try to learn it, it is completely shit. It is the most obscure, abstract, whacked out language ever thought up. But it’s perfect. It is so elegant, and so simple, that you just can’t believe it works that way. What makes LISP difficult to learn is that you spend half your time unlearning deeply ingrained prejudices about how things can or should be done. Getting over this initial hump is the hardest thing about learning LISP. Oh, and the documentation can sometimes really suck. If LISP had PHP style documentation, it would totally rule. It would rule everything.
First run apt-get install curl sbcl Second run curl -O http://beta.quicklisp.org/quicklisp.lisp Third run sbcl –load quicklisp.lisp Fourth Inside the REPL run (quicklisp-quickstart:install) Fifth Inside the REPL run (ql:add-to-init-file) And you are good to go! I would suggest running (ql:quickload “cl-ppcre”) to get easy PC RegEx in your environment, as a programmer, PCRE is a must, and basic language requirement for just general purpose programming.
What is necessary to learn chess, and to become good at it, is to take on a kind of chess apprenticeship. Of course finding a chess coach is one way to do this, however; the problem with a chess coach is that he monetarily benefits the slower you learn. In the old days of an apprenticeship, the faster you mastered your trade, the more valuable you were to the master. This system[apprenticeships] arose as a solution to a problem: As business expanded in the Middle Ages, Masters of various crafts could no longer depend on family members to work in the shop. They needed more hands. But it was not worth it for them to bring in people who could come and go – they needed stability and time to build up skills in their workers. And so they developed the apprenticeship system, in which young people from approximately the ages of twelve to seventeen would enter work in a shop, signing a contract that would commit them for the term of seven years. At the end of this term, apprentices would have to pass a master test, or produce a master work, to prove their level of skill. Once passed, they were now elevated to the rank of journeymen and could travel wherever there was work, practicing the craft. Because few books or drawings existed at the time, apprentices would learn the trade by watching Masters and imitating them as closely as possible. They learned through endless repetition and hands-on work, with very little […]
Chess is absurd. Philosophically it is the ultimate proof that strategic thinking is inherently, and morally flawed. Whatever you have been told about chess, you need to forget it very quickly because it is wrong. Most people think that the point of chess is to checkmate the opponent’s King, this is completely naive. The point of chess is to acquire advantage, and then destroy everything except what you have. This advantage becomes smaller and smaller the better at chess you become, until at high levels, the mere possession of a well placed pawn decides victory. The point of the Opening in chess is to establish a basic position and snatch an advantage, however small. The point of the Middle Game is to perform a series of equal exchanges so that you maintain your advantage. The point of the End Game is finish destroying whatever your opponent has left, then marching your pawn to the other side of the board and converting it into a Queen. At which point check mate is an epiphenomenon. Very few chess games get to this point. Normally the opponent simply resigns once it becomes obvious he cannot win. The reality of chess is that check mate is a secondary consideration, it only occurs outside of the End Game when either party has made a serious error. The method of chess has very little to do with anything approaching strategy. Chess is, or at least has in the last 100 years become, the art of memorization. This doesn’t mean that there […]
This book is the chess book that I have always wanted. I have managed to collect together many chess books, all very good, but each has its flaws. I am not writing this book as a master attempting to explain good chess, but as a student who is learning. Here is where I will gather all the knowledge I have learned thus far, in the hopes that it will help others, as well as myself. Black is the most important side of the game, because its response to the opening move of white determines the game, the lines, and all the strategies to be employed. White is, in a sense privileged with the first move, but at a disadvantage if black is well prepared. A well prepared black player will also be a well prepared white player. It is for this reason that this entire book will be from the perspective of black, and that is why it is called The Black Grimoire. Style Guide There are many different ways to present and annotate a chess game, most of them are rather irritating. The first is the practice of using chess piece dingbats, which in this book will be conspicuously absent. I prefer the letter notation, it is clearer, and more in line with the internet and fonts. The next issue which I have, and perhaps I am alone in this, is that annotations usually serve to confuse and irritate you when trying to play through the game. Most annotations are completely useless, sycophantic, or […]
So the first trap we’ll be looking at, is the Lasker Trap which comes about from the Albin Counter Gambit Variation of the Queen’s Gambit. Lasker Trap – Queen’s Gambit Albin Counter Gambit