I recently updated my self-hosted WordPress install, and everything seemed fine until I went to write a new blog post. That’s when I found that the toolbar buttons were missing.
I don’t use the Visual editor in WordPress, preferring to type the text/HTML out myself. The Visual editor’s toolbar was available.
I found a lot of people running into this issue over the years. Suggestions ran from reinstalling the WordPress installation to reinstalling TinyMCE in the wp-includes/js directory to permissions issues to disabling plugins.
I’m partially annoyed because TinyMCE is for the Visual editor, not the Text editor, and searching for the Text editor specifically still gives you this advice which is a waste of time.
But anyway, I determined it was my All-in-One SEO plugin being out of date. Once I updated it, I was able to see the toolbar in my Text editor again.
I hope this helps someone else fix similar issues much faster than I did.
In almost any endeavor, you can go it alone, or you can get help. You can spend all of your time researching and practicing and tweaking until you figure things out, or you can buy a book or hire a consultant and have someone tell you what they have already figured out after years of his/her life were spent on the topic.
Leveraging the work that has been done by others is a shortcut, and it is perfectly fine to take them. If you want to learn how to do software development, you don’t need to build your own computer architecture, as you can leverage the existing Von Neumann architecture in most modern machines. You don’t need to start from first principles. Someone already figured it out, and you can take advantage of it.
This kind of advice is ingrained in our culture.
Don’t reinvent the wheel.
Don’t spend your time doing that task when you can hire someone to do it for you faster and at a level higher quality, which saves you time, too.
This is the way it has always been done, and it’s the best way we know.
On the other hand, sometimes we advance the arts and sciences by starting over and exploring our assumptions.
In Bret Victor’s talk The Future of Programming in which he pretends to be an IBM engineer from 1973, complete with transparencies and a projector, he talks about the problem of people who think they know what they are doing:
He starts out explaining the resistance to the creation of assembly code by the people used to coding in binary. Coding in binary WAS programming, and assembly was seen as a waste of time and just plain wrong.
He goes on to talk about exciting advances in programming models from the late 60s and early 70s, and extrapolates some tongue-in-cheek “predictions” about how computers will work 40 years in the future, predictions that lamentably did not come about. Today we still code much the same way people did back in the 60s.
Ultimately, he warns that there is a risk to teaching computer science as “this is how it is done”.
The real tragedy would be if people forgot you could have new ideas about programming models in the first place.
The most dangerous thought that you can have as a creative person is to think that you know what you’re doing, because once you think you know what you’re doing, you stop looking around for other ways of doing things. You stop being able to see other ways of doing things. You become blind.
Game design applies here, too. Video games from the 70s, 80s, and 90s were quite varied. People were figuring them out because no one knew what they were. They tried everything.
Eventually some key genres popped out of this period of experimentation, and some control schemes and interfaces became common. It’s hard to imagine real-time strategy games without Dune 2‘s UI conventions.
It occurred to me that game design, like any evolutionary process, is sensitive to initial conditions. If you want to stand out, you need to head back in time to the very dawn of a genre, strike out in a different direction and then watch your alternate evolutionary path unfurl.
When people think of a match-3 game, they have something in mind because all match-3 games tend to be similar. Triple Town ended up being quite different, yet it was still recognizable as a match-3 game, and people loved it.
Some people merely need to leverage existing infrastructure. People are using Unity for game development because, much like Microsoft’s XNA before it, it handles all of the boiler-plate for you, and it also provides a lot of the technical tools in an easily-accessible way so you can focus on the development of the game rather than the technical details of making a game.
But some people are pushing what’s been conventionally thought of as possible. Spore, for instance, had to procedurally generate animations for characters that weren’t prebuilt, which meant someone had to figure out how to do so. There was no existing 3rd-party library to leverage. The shoulders of giants here weren’t high enough.
I’m part of a book club right now involving algorithms. We’re reading Steven Skienna’s mostly-accessible book The Algorithm Design Manual, and it’s been enjoyable and challenging. I haven’t studied algorithms since college, and I kind of wish I could go back and check my notes from class.
But what bothers me when reading this book is the warning about trying to completely invent a new algorithm on your own. Skienna argues that most problems can probably be adapted by sorting the data or otherwise thinking about it in a way that an existing algorithm can solve it.
And he’s right.
But someone had to have figured out these algorithms in the first place, right? Someone saw a problem and had no way to solve it, so he/she came up with a way, optimized it, and published it.
But today I’m expected to just learn what they did and use it, and I feel like I’m being told to stay away from actually trying to figure out a better way on my own, as if all of the algorithms that can be invented have been invented.
And if I just want to solve particular existing problems, it’s probably practical advice.
But if I want to explore an entirely new kind of problem, what am I supposed to do with old assumptions and solutions? Square pegs don’t go in round holes, and I don’t think we want a future where we are taught that round holes are the only kinds of holes in existence.
I was working on a game involving leaf raking, and I tried adding physics code to it. I researched a lot until I came across Randy Gual’s Custom 2d Physics Engine tutorials.
My own implementation leaves a lot to be desired so far, as can be seen in this YouTube video I uploaded of leaves ricocheting when I turned off damping to see what was happening:
Somehow they seem to pick up more speed after some hits but not always. I’m sure it has something to do with how I calculate the velocity along the normal of the collision.
Yesterday I went to the Des Moines Art Festival with my wife. Vendors from all over the country put their works on display and attempt to sell them, and the variety always amazes me.
There are oil, acrylic, or watercolor paintings. There are photographs. There are ceramic sculptures. There are wood carvings. There are metalworks, glassworks, and mixed media pieces. There are displays, frames, furniture, clothing, jewelry, baskets, kinetic sculptures, and plateware.
Some pieces are functional, and some are abstract. Some were gorgeous, and some were fascinating to look at. Some I could see having a place in my home, and some I could see never making it in through the front door. B-)
Almost all of them were priced outside of what I could afford, but it was still enjoyable to browse. It’s kind of like going through a museum and seeing what’s possible, and I found myself delighted by finding out about things unlike anything I’ve never heard of or seen before.
For instance, I learned about “scissor drawings”, and the artist explains how she creates her work in this video:
I learned that some people are inspired by nature, found objects, inherited family heirlooms, and by abandoned places. Some people had artistic statements that were straightforward, some were general and vague, and others seemed to struggle with the idea of mixing commerce with art.
I had one conversation with an artist about the festival, and while I can’t remember exactly how she said it, she said, “One of the purposes of art festivals is to get people to be aware of what’s out there. It’s not all economics.”
So despite walking away with nothing, I feel I gained quite a bit simply knowing more about the artistry that’s out there in the world.
Last night, my wife taught me a card game she played with her grandmother earlier that day.
Hand and Foot is a Rummy game similar to Canasta, but it apparently has no standard rules. It was hard for us to look up what is allowed in certain situations. For instance, I was at the end of my Foot, and I had drawn two cards and now had an Ace and two Jokers. If I play them, I have no card left to discard. Am I allowed to do so, or do I have to discard at the end of a turn, meaning I can’t play my hand and must either give up a valuable Joker or an Ace.
It occurred to me that I’ve never played many card games. These days, I play Four Point Pitch and Up and Down the River with my in-laws, games I didn’t know a few years ago until they taught me. When I was younger, I played Solitaire, Kings in the Corner, and Thief with the Italian playing cards my parents always had on hand.
But as a game developer, shouldn’t I be more well played than I am? There are centuries of games out there, but if I limit myself to the popular video games of today, aren’t I also limiting my source for inspiration?
Granted, many are thinking that today is the Golden Age of Board Games. Between Kickstarter and popular cons, people are creating and playing games that aren’t the usual Scrabble and Monopoly. I’m participating in a few board game nights these days, whether it is at the day job or with friends, and I’m learning quite a few games.
I’ve seen similar books on card games that are larger and probably more comprehensive, but 300+ pages of card games with their variations is a good starting point.
When playing Hand and Foot, I noticed a few self-regulating aspects of the game that were pretty clever. For instance, if you want to pick up the discard pile, you had to pick the entire pile up. If it was full, it meant you suddenly had a lot more cards in your hand, which means you can create melds more easily, but the discard pile might include multiple dangerous red 3s, and you can only get rid of each one once per turn. Have a red 3 in your hand reduces your score by hundreds of points. It’s a risk you might be willing to take if you have been struggling to complete melds, though.
Similarly, you might play all the cards in your hand until you have almost nothing left. That’s great, because you are close to getting rid of the cards in your hand, which allows you to pick up your foot (Oh! I get it now!), but it also means you have a harder chance of creating a meld and actually getting rid of those cards.
So just exposing myself to this one new old game got me thinking about game design. What if I spent time learning more such games in earnest? I wrote about consciously consuming information daily, and reading and listening to a variety of information is beneficial. I’ve been thinking about how important it is to also play a variety of games.
The great thing is, I already own a deck of cards. I’ve paid the expensive part. It can be quite the investment to get a new board game or video game, but a trip to the library might be all I need to do to find books on card games I could play with my existing deck.
Heck, I also have a bunch of dice, and I’m sure there are plenty of dice games out there, too.
It’s time to make a conscious effort to learn some new games. Got any recommendations?
I’m working on the physics of my game, and I’m trying to sort the collidable object data on the X axis, then on the Y axis. Sorting should help my implementation of Sweep and Prune work faster, and so I wrote my own less than operator.
Yet, when I call std::sort(beginIter, endIter), I get a seg fault in the bowels of the sorting algorithm.
Looking online, I find that the problem other people are running into is with their custom comparators. std::sort requires a strict weak ordering, meaning that if a < b, then you can't also say a == b, or else the sort algorithm's assumptions are invalid.
Ok, but what was wrong with my code? It must be something else...oh, wait.
I wanted to sort on the Y axis only if I couldn't sort on the X axis. My implementation checks the X axis, then if a.X() is not less than b.X(), it checks the Y axis, which means if a.X() == b.X(), or worse, if I know for sure that a.X() > b.X(), then I’m doing further sorting when I don’t want to do so.
I made this change:
if (!lessThan && this->m_position.X() == rhs.m_position.X())
And now everything is sorting properly and without a crash.
When I started this weekend, I thought, “I’m going to make a complete game that’s enjoyable to play.” I wanted the Button Masher Bros to play my game and enjoy themselves.
Towards the end of the deadline, I was thinking, “I might be able to get the bare minimum of something that could be called a game in.”
You click to tell your soldier to move, and you try to avoid the monster. There’s a game over screen when you get killed.
You can attract the monster’s attention by clicking on it.
Unfortunately, I didn’t add the reason why you would want to do so: to destroy your enemy’s camp.
Fighting bizarre and non-bizarre bugs slowed me down, but I did not do anywhere near as well as I would have liked.
I wanted to get something controllable by 12 hours in, and it took me almost 25 hours. Then I didn’t have anything resembling playability until the last couple of hours, and then I ran into trying to figure out what AI bugs and graphic offsets issues I had.
I watched my timelapse, and I can see that I didn’t take my own advice about not spending too much time on the art. I think the majority of my efforts involved getting the sprites right.
Oh, and the weird bug that caused bizarre issues with the buffer not updating? I think it turned out to be a glitchy system. Once the computer crashed, and yeah, I needed that to happen near the deadline, everything ran fine for the remainder of the compo. I should have rebooted right away. That problem cost me way too much in time and stress.
I’m pretty disappointed and deflated. It’s been two years since my last Ludum Dare compo, and I feel like I’m not any more capable as a game developer than I was then.
I know I have another 24 hours for a Jam entry, but I planned to dedicate only the past 48 hours to Ludum Dare and I will not be able to do much more.
All that pity aside, I did like my idea, and I think the game in my head would be enjoyable if I could have developed it. A bumbling giant monster that gets easily distracted is chasing the player who is trying to lead it to the enemy camp without getting killed in the process. Part of the game play was to get the giant to move in one direction while looking another, causing it to trip and fall. If it falls on top of a building or other enemy structures and units, they would get destroyed.
The monster and the player would each be able to pick things up and throw them. The player would throw things to attract the attention of the monster, while the monster would be aiming to kill. This feature got cut.
Towards the end, I even created quick art to create a building, including rubble, but it never made it into the game.
I wanted to have something playable or at least controllable within 12 hours. I did it within 25.
You can now click on the ground, and the soldier will move assign itself the goal of moving towards that point.
The monster is still just placeholder art with basic AI.
There are bugs, though.
For some reason, when I run my game, the loading screen gets inconsistent for me. The mouse cursor freezes on the screen on the main menu screen, in both of these cases, I see the screen look like it is locked, or flickering between two images that should not be on the screen. For instance, my loading screen says “Loading resource 8 of 14”, and it bounces back and forth between 8 and 9, which isn’t happening in my code, which makes me think that there is a problem with rendering.
Animation looks weird once I enter into the game, and so I have to restart the program and hope that I don’t see the issue again.
I tried it in another game which has more or less the same code, and it seems to work fine, so at least that rules out an expensive hardware issue.
But the bad news is that I have a ridiculously difficult to diagnose bug in my Ludum Dare project, and there is less than 24 hours left in the compo. There’s also a weird rendering issue in which my terrain is showing gaps behind it as I move about the world. B-(
And I still have a ton of work to do.
Also, I realized that with all of the struggles, I have been forgetting to commit my changes. Here’s the complete commit log:
Early on, I realized that my efforts were all over the place. I wanted to work on adding a playable character, and I ended up making some terrain instead. Nice, but not as important.
Holy cow, it made a huge difference! I was able to dump everything out of my head, realize there were some gaps, recognize that I had a scope issue, and also prioritize whenever I identified a new problem or bug to fix.
It also helps me see my progress. It’s easy to get demotivated when the clock keeps ticking, but seeing all of the completed work reminds me that I’ve made a dent, and it also helps me keep focused because I want to get more of those planned tasks crossed off my list.
Of course, I’m always realizing something that needs to be added, so the list will get larger. I’m not sure if more planning or more doing would have revealed that information to me sooner.
I had some oatmeal with peanut butter and raisins, with some cinnamon and nutmeg. I also had a small glass of orange juice and the smoothie my wife made.
When I drank the smoothie, I noticed that the side of the glass had this very neat texture:
I might tweak the color and turn it into the landscape in my game.
I decided that there will be a player character represented in the game. It adds risk, because if the monster catches up to you, you lose.
So, who are you? I originally envisioned some spoiled brat who wanted to get revenge on the people in his town. Maybe that cool neighbor with the better treehouse will think twice the next time he brags about how much better it is than yours.
But then I took a shower, where we often have our best ideas, and I thought of an outnumbered military unit desperately seeking a way to tip the balance in their favor. Finding a monster to do their fighting for them seems like a good alternative to dying and losing the war.
Which also gives the player a reason to worry about the monster getting killed before it can do its damage.
There’s 34 hours left in the compo. I better start planning.