Categories
Game Development Geek / Technical

J2ME Development

I mentioned previously that I was going to help a friend with his mobile game development company, and so I finally got around to learning how to work with J2ME.

I’m reading J2ME Game Programming by Martin J. Wells. I don’t much care for his randomly inserted jokes, and it is fairly obvious that the book is geared towards Windows. At one point I thought that Sun didn’t offer a MIDP1.x package for Linux-based systems, but I finally found it. I really didn’t want to be forced to use Windows every time I worked games in general, let alone mobile games.

It didn’t take me long to get things going, as you can see:

/me finally gets to check off an entry in his TODO list.

Categories
Game Development

Oracle’s Eye Development: Third Week

I covered the results of the first week of development on Oracle’s Eye. By the end of that first week I realized that my plan was overly optimistic, considering I usually have a single day of development time per week. While I can use the 10 Minute Method to get something done each day, there really is only so much code that can get written in a 10 minute session. I basically try to do other things on those days, such as setup the build files or create really simple images in the GIMP. Basically, whatever I can do that doesn’t require much concentration. I don’t need to be in the zone to create simple images. Let the artists worry about making it look just right.

According to my plan, I was supposed to be able to move the player around in four directions and create a room by the first week. By the end of last week, I was hoping to be able to load levels, and ball movement should have been in place the second week.

Unfortunately, I’ve only just now created a stick figure with one frame of animation that moves in one direction. Well, enters hyperspace in one direction is more like it. I realized that I never placed any timers in my code, so the drawing and updating is happening many, many times per millisecond. It literally looks like the stick figure is getting pulled through space-time as it moves. That’s fine and can be fixed, but oddly enough, it somehow wraps around the other side, even though I never coded it to do so. I am definitely not comfortable with not knowing why my code is behaving in this way.

Bottom line: I am WAY behind schedule. I have to decide if running late is acceptable or if I should minimize the design so much that it is an even simpler game than I originally envisioned. I wanted to have a small game completed by the end of August, but I’m wondering if it might be better to continue with my current design and plan to work through September and likely October.

It basically boils down to this question: is it more important to have more games in general, or finish this game specifically? Finishing this game design would allow me to show what I can do when I dedicate myself to the project. On the other hand, making a really simple game would allow me to not only have a finished project sooner but also let me work on a new one right away.

I’ve got some thinking to do.

Categories
Game Development Games

August IGDA Presentation: Creativity Is a Dirty Word

The Chicago chapter of the IGDA flew in Lorne Lanning, of Oddworld fame, to give a talk titled “In a Walmart World, Creativity is a Dirty Word”. I took the opportunity to volunteer to help out by collecting the entrance fee and selling the occasional IGDA t-shirt. I got to meet quite a few people, if only to shake hands with them, including Dan Choi of Joystiq.

I only played an Oddworld game once at a friend’s house, and so I wasn’t familiar with Lanning, his work, or his history. I went into it thinking that it would be a fairly standard presentation.

I was wrong. His presentation was very humorous, including many classic pictures that anyone who has been online for any length of time must have seen in a forward or link. It covered topics ranging from the role of games in escapism to the cost of imagination realization to the barriers games have in a world where “creativity” equates to “high risk”. The whole time you could tell that Lanning has a passion for what he does, and it was very infectious. At least for me. I couldn’t wait to get home and start creating things. In the interest of full disclosure, I actually ended up eating macaroni and cheese and cookie dough ice cream with friends that night.

Lanning started off talking about what the culture was like when he was growing up. Basically, gloom and doom. Vietnam, fear of nuclear war, and all sorts of issues with trust in politics resulted in a very disgruntled population. Then George Lucas makes Star Wars, and people have an escape. Lanning notes that in some poverty-stricken countries, people go to the movies every night. Movies were a form of escapism, and the nation desperately needed it.

Lanning mentioned that the costs of realizing your imagination had been going up. He talks about how he used to draw and paint, and he would think of it as taking “Kodak images” of some other world and time. A pencil and paper costs very little when you’re a child. Paint sets start to cost money, but they are doable on student’s budget. A basic camera to create a film costs even more, and when you add up the costs of actually producing a movie, it starts to get prohibitive to do. Then supercomputers were used to make computer graphics in movies, and the costs were astronomical. It costs hundreds of thousands of dollars per month for cooling the machines. Computing costs have come down recently, however, and a personal computer for a few thousand dollars is a supercomputer compared to the machines that cost millions a few years ago. He basically makes the point that movies and games cost quite a lot to produce. When I asked if he agreed with EA that game budgets are going to go up as much as they say, he basically said yes, but he did acknowledge that not all games are trying to be incredibly realistic or flashy.

He showed a number of pictures portraying developers and publishers. That was hilarious. He displayed some movie clips from work he had done in the past, including some computer generated movies, Abe’s Oddysee (“Follow me.” “OK”), and the latest, Stranger’s Wrath. He talked about the importance of empathy in games, and that it didn’t take too much work to get people to love the characters in Oddworld’s universe.

He documented the downfall of the word “creative”. In 1994, it was good. Companies wanted creative. They might not understand games, but they understood that good, creative games resulted in cold, hard cash. Today, publishers want to be able to sell games that they already know how to sell. Creativity is still good, but only incrementally. They know how to market a first person shooter or a real time strategy game. New genres are scary. If an incremental improvement can result in profit, why risk so much on a completely innovative game?

Retailers and magazines will push those games that get the most marketing bucks in their pockets. Lanning mentions that Alexander was a terrible movie, yet gets an entire wall of shelfspace at a rental store. Meanwhile, The Fog of War: Eleven Lessons From the Life of Robert MacNamara gets over 100 great reviews and an Academy Award among others, and you will find it buried on a shelf with a bunch of terrible movies. Similarly, you can have the greatest game ever, but if a magazine doesn’t think it will get full page ads from it, good luck getting on the cover.

At some point he commented on the political issues in the game industry. Interestingly enough, he warns that the political attacks have only just started. When I asked if he could comment on what he thinks it might look like, he simply answered that politicians are like game developers. Both are trying to cut through the noise and promote their brand. In the case of the politician, that brand IS the politician. Games are an easy target.

He concluded with a comment on the ability of game engines to create film-like experiences. Previously a computer-generated movie had to be scripted and pre-rendered. Now machinima is just being explored. Next-gen systems will only increase the possibilities to make compelling stories. While pre-rendered will always look better than real-time in movies, Lanning notes that it is getting to the point where it won’t matter to the viewer. Linear and non-linear stories will just become easier to develop.

My favorite part of his presentation was the idea that in a few years the question “Are you a gamer?” will be as silly as asking people today “Do you listen to music?” No one today says, “I’m a movie watcher”. In the future, “I’m a gamer” will be just as silly a statement.

The IGDA Chicago chapter recently decided to try to create higher quality meetings, and if this one is any indication, I look forward to the next one.

Categories
Game Development Games Geek / Technical Linux Game Development Marketing/Business

Quake 3 Source Now Under GPL

It’s been in the news for some time, but it is still very cool news: Quake 3: Arena Source GPL’d

id has been pretty good about releasing the source to their older game engines. It’s not a new idea for the company. Apparently you still have people who think that the GPL is about stealing someone’s work, as this comment shows:

A Shame
Why did not you buy this game ?

Quake 3 is a great game, it costs few bucks

You want games for free, so I ask you to work freely, without salary.
Give your goods for free if you ask the games for free !

Huh?!? id released the source code to their engine under the General Public License. The game data and scripts remain proprietary, so you can’t legally play the GAME unless you pay for the proprietary data . It isn’t like some GPL zealots hacked into their servers and placed the code under the GPL. It isn’t like Carmack will come out with a statement like, “It is with great regret that I must inform everyone that we’ve lost our source code to the scourge of the GPL; however, we will not give up. We will fight back, and we will win!” It was a conscious decision to release the source, and no one is under the delusion that it is a free lunch except for people who think that the GPL equates to legalized piracy.

The Complete Text of General Public License
The GPL covers whatever an author wants to cover. Some games, source code and data, are covered under the GPL entirely, but the terms are restricted to the engine’s source code in this case. Therefore, the GPL dictates the terms of copying, modifying, and distributing the Quake 3 Arena source code. Not how you actually use the program. Not what you can do to the art or music that comes with the game. Copyright law gives id exclusive rights to the Quake 3 Arena engine source code. If they want to allow people to read the code, change the code, compile the code, redistribute the code, etc, they have the right to do so. The GPL is simply one of a number of standard documents to express what rights they are allowing others to have.

Don’t worry. No one is ripping id off.

Categories
Game Development Marketing/Business

Success With Style

I didn’t know that Donald Trump had a blog, and I never really paid attention to him anyway. “You’re fired!” was never really a catch phrase I cared about, and I always thought that he was just an incredibly rich guy. No reason to care one way or the other about him, right? I find it funny how many of the comments on his blog are just people throwing compliments left and right. Not just compliments, either. Worship is probably not too strong a word to describe it.

Anyway, I did enjoy reading Success with Style, where he essentially talks about how true beauty is deep. Success comes with style, and style isn’t something you can slap on as an afterthought. It has to be there throughout the design and development of whatever endeavor you are taking on.

While he wasn’t talking about game development, I think that if you were to make a game and try to add higher poly counts or orchestral sounds without truly paying attention to how it fits into the game, you would have something superficial, and people will know. Generally, it is understood that a good game isn’t just good graphics, although I have been surprised to find people who thought it was the most important thing in a game. Of course, it isn’t like there is a definite formula for making a good game since the definition is different for so many people. Still, I think that if you keep style in mind, how can you go wrong?

Now we just need to decide on exactly what style means, and we’ll be all set. B-) Maybe this is related to a timeless way of game design?

Categories
Game Development Linux Game Development

Open Source Multiplayer Server/Client Library

Maybe a year or so ago I was trying to find something along the lines of a multiplayer lobby to include in my own games. I didn’t have any games in mind, but I knew that I would need this software if I wanted to make a useful multiplayer game. Unfortunately it was difficult to find, and I didn’t like the idea of using GameSpy’s software as there didn’t seem to be anything Gnu/Linux compatible about it. It’s even more out of the question since I want to release the code under a Free/Open Source license. I would have to write my own server/client software, and I basically took comfort that I wouldn’t have to worry about making a multiplayer game anytime soon.

Then I saw a post on gamedev.net:

GNS, or Game Name Search, is an open source game portal client/server package. Game developers may integrate the GNS client into their video games, and host an online GNS server to allow clients to find each other over the Internet. GNS servers also provide chat room functionality and content hosting.

It is under the MIT license, which makes it perfect for FOSS and proprietary software developers alike. It is currently at v0.1 Beta, but Gamieon, Inc already has plans to host gaming servers in the future. I imagine that charging for this service will be their main source of revenue from this product, although they do have others.

I think this software sounds like it has a lot of promise and would fit in perfectly with my own game development. When I get to the point where multiplayer games are a possibility for me, GNS will definitely be on the short list when I decide what tools to use.

Categories
Game Development Geek / Technical

Time Flies

Whoops! I didn’t meant to stay up past midnight programming!

I think it is a good thing that I was getting so into it that I didn’t notice when an hour or two went by. At least, that’s what makes me feel better about how behind my project is. In this time, I managed to get the program window to come up and close on the correct input without seg faulting for the first time.

I was still having fun, as frustrating as it was. I distinctly remember not feeling motivated when I started this programming session, but here I am, hours later. Good night!

Categories
Game Development Linux Game Development

Oracle’s Eye Development: First Week

Steve Chandler’s 100 Ways to Motivate Yourself mentions definitely planned work as being both motivating and productive. The idea, which has been repeated by many people, is that one hour of planning saves three hours of work. Also, once you have a definite plan, you can’t help but get motivated to actually start doing things according to that plan.

I thought that today would be a good development day. I had asked for the day off from work to attend a seminar today, met with a friend for lunch, and came home. Unfortunately, I took a nap for a few hours. Not a good start. But at one point, lying half-awake, I started to think about making the game. While the seminar was interesting, I did take some time while there to work on some designs for the classes I will need. When I thought about those classes, I thought about how much I clarified my future coding just by taking some time to write down ideas. The idea of doing even more design work got me motivated to wake up completely and get to work.

Right away, I hit my first challenge. I haven’t decided how the graphics or other data would be licensed yet, but the code itself will be licensed under the GPL. I didn’t need to think about it until I started to write some new code. While I was originally modifying my code from my GiD, I decided to try to make use of Joost Ronkes Agerbeek’s code from his post A Closer Look At The Game Engine. I was only working on main.cpp, and I made some modifications to the code. According to the ZLib license, I need to make it clear that the altered source wasn’t originally made by myself. I couldn’t remove the ZLib license either. Could I still use the GPL for my project if I used ZLib licensed code? Will I really have to rewrite main.cpp, which isn’t more than a few lines in the first place?

I googled “ZLib GPL compliant” and found the Free Software Foundation’s Various Licenses and Comments about Them. Regarding the ZLib license: “This is a free software license, and compatible with the GPL.”

Oh. So while my project can be under the GPL, portions of it can be licensed under other free licenses. I added some comments to main.cpp to specify where the source came from and the fact that I modified it. I also provided a listing of the ZLib license and maintained Joost Ronkes Agerbeek’s copyright noticed. I am new to mixing code under different yet compatible licenses.

All this before doing any “real” coding work. I could only imagine how difficult it is to work on a much larger project that might mix tens of hundreds of licenses. It is no wonder people have been complaining about license proliferation! Still, it left me wondering what I can do with my own code. I would like to clean up my existing engine. Would a single line change still need to be credited to Joost? My main.cpp is obviously just a modified version of his Main.cpp, but what about when I add functions to and remove members from my GameEngine class? Is that copying or is that reimplementation? I sent an email to the Linux Game Development Center’s mailing list to ask how other people mix code legally. After getting a quick response, I was quickly reassured that I didn’t have to keep detailed comments regarding which code belongs with which license.

Now to the real work: I spent a great deal of time just reworking my existing state machine engine to make it cleaner and work much more like Joost’s. Of course, I was trying to make my own project work with the Kyra Sprite Engine, so I had to make some modifications. In the end, I spent quite some time just trying to get the project to build cleanly. It doesn’t do anything other than create a window and quickly seg fault, but that isn’t bad for just a few minutes of coding.

But it is bad for the week. I didn’t spend much more time on the project. Besides writing down some ideas about the design, I really only spent that one session actually programming. But perhaps it isn’t a complete failure. One hour of planning saves three hours of work, so maybe this first week might make the rest of the month much more productive. At the very least it should now be obvious that I need to dedicate more time in a week to working on the project. B-)

Categories
Game Design Game Development Marketing/Business

Girl Friendly Games?

People keep talking about making games more girl friendly. When women make up over 50% of the world but only a small percentage of your customers, more women gamers means more sales. Naturally, there is an emphasis on attracting women to video games. But then people guess at what to do. More cute characters would be good. What girl doesn’t like Hello, Kitty? Or what about making games geared towards girls? Barbie games? Yeah, right.

Instead of trying to attract women exclusively or specifically, why not simply make the game more accessible in general?

An example:
Debian Women is a project to get women more involved with Debian.

We will promote women’s involvement in Debian by increasing the visibility of active women, providing mentoring and role models, and creating opportunities for collaboration with new and current members of the Debian Project.

Debian’s mailing lists are known to be elitist, which turns off many newbies. People were leaving Debian for Gentoo which has newbie-friendlier web forums, and in general there are more men than women involved in computers. Still, it turned out that this community project didn’t just attract women. Debian Women also attracted men who were tired of hearing “RTFM” when asking for help. When Debian became more accessible, it allowed everyone to participate, not just more women.

Awhile back I went to see Sheri Pocilujko of Incredible Technologies give a talk on Female Friendly Gaming. When I asked her about the basis for her ideas, she admitted that there were no studies to support them. She was basically going on anecdotal evidence. Still, I think what she noted and suggested makes sense. She noted that making games more attractive to women in these ways also attracts men. I paraphrase them here, but the basic idea is to make your game more accessible, not more pretty. Women, non-gamer men, etc. Even the hardcore “mainstream” gamers of today aren’t as hardcore as they were years ago. Playing a game that has the interface of some old NES games would be a painful experience today for many who have been spoiled with modern advances.

When making a choice, you should be provided with all the information you need so that uncertainty is minimized.
Research has shown that girls are less likely to get called on in class than boys. Boys continue to get attention even if they are wrong, but girls in general are more timid about being wrong and so avoid participation. In the end, boys grow up to be men who are risk takers while girls grow up to be women who are unsure. Women don’t take mathematics or science classes as much as men do. In fact, girls are raised to believe that “Math is hard”. There are other studies that show that females are raised differently from males. Males are prepared to be independent while women are prepared to be dependent. They grow up with certain expectations which turn out to be wrong when it comes to the business world. NOTE: while I normally like to receive feedback, my experience in LA&S classes in college requires me to point out to you that these studies exist and in no way do I imply that ALL women act a certain way. I am not claiming that women are always frail flowers or that they can’t be competitive with men, so please don’t respond as if I did. Thank you.

What is the point? The point is that when you are making a decision, whether in a game, in business, or in life, you have a certain fear. No one wants to make the wrong choice. The more information you have, the less uncertainty you have. When you provide a choice to the player, you should be able to provide all the information that the player needs. But too many games require the player to “know” something. Imagine if you were given a choice of three potions: red, blue, or green. It might be a legitimate fear that if you pick a potion, it might be the “wrong” one. What if you should have taken the red one but you took the blue one? What do those potions do? Why might you need each? How likely will you need each one? With this information, it is enough for people to stop playing. “Math is hard, so I won’t take it in college if I can help it.” It is said by men and women alike. There are just more men who happen to like math and video games. Maybe the analogy is flawed, but I think they are related. I think men play video games more often than women because they were perfectly fine with trial and error to learn how something works. Doing it wrong the first couple of times didn’t phase them. Women, on the other hand, probably got discouraged from initial failure and went back to their training: “Math is hard, so do something else.”

Provide enough information for the player to make an informed choice. Super Mario RPG is a great example of a game that provides information on screen when you need it most without making it annoying to experts.

All relevant information needed to play the game should be provided upfront.
Pocilujko related the story of a girl who bought a fighting game for her boyfriend. She practiced for weeks so that she could surprise him by being able to play the game with him. When she gave it to him, and they started to play, he defeated her soundly. He would even make use of moves that weren’t in the instruction manual. When asked, he just claims that he “just got it”, but the girlfriend was very put off of the game. She read the instructions, practiced, but the special moves were completely missing and she wasn’t aware of them.

I personally didn’t like playing Mortal Kombat or Killer Instinct because there was no way to learn the moves in game. You had to learn it from someone else or through cheat guides. That’s not fostering community so much as making a bad first impression. Super Smash Bros is a fighting game where the controls are the same for each player. Sure, there are slight differences in results, but the interface and mechanics are roughly the same. People pick it up quickly, although it would be better if there was a way to make it obvious which buttons do what in game as opposed to requiring someone to read the manual.

Don’t hypersexualize the female characters.
Women with unrealisticly large breasts might appeal to male teenagers, but most women (and some men) will take offense. You might have scrawny males, fat males, muscle-bound males, but women are almost always sexualized in some way. I’ve heard some people, including women, claim that making the men attractive will help too, but I don’t think that showing shirtless men will really attract the other half of the world to your game.

Characters should have a purpose in the game other than fulfilling the sexual fantasies of teenagers (in age and mental capacity). Won’t it be more compelling to more people to have interesting characters, or should you continue to cater to those who would rather spend their gaming time trying to zoom the camera down a polygonal blouse? Last I heard, The Guy Game didn’t sell well at all even though those were real women.

Make it easy for people to want to buy from you.
Another thing that Pocilujko talked about was marketing and selling. Girls don’t buy games at video game stores because the exclusively male team who invariably works there almost always make them feel uncomfortable. Instead, girls shop at Walmart or Target for their games. The people who work there don’t care that she’s a gamer, so she isn’t in fear of getting asked out on a date or being told that she should look for My Little Pony games instead of Doom 3. While a girl might play at a gaming kiosk, she might back away from it the moment males start to play or a male sales representative appears. Why? Comfort. Have you heard what 12 year olds say when playing a video game? Yeesh.

She mentioned being a salesperson for a Star Wars card game at one point in time. Not only did women feel more comfortable buying from her, but imagine how the men reacted. Here is a woman who not only knows about their game but is also interested in it. Quite a few sales resulted in those interactions, although I don’t think it is necessarily for a good reason. Still, people were more open to the female salesperson who was also knowledgable in the game than they would have been to the male version. Women specifically were more open to playing a game where the person teaching them wasn’t perceived as judgmental.

It is funny because this isn’t just a secret to getting more women gamers. It is a secret to any sale in any business. Make the customer more comfortable about buying from you, and you eliminate another barrier to closing the sale.

Long ago, games didn’t have a lot of room for storing things like a good interface or help text. Most gamers were game developers, which mean they were programmers. Interface wasn’t as important since the person playing the game knew how to use a computer. Today, there is no excuse. A lot of research has been and is being done, and many of these problems have already been solved quite well. Most people aren’t computer science majors and you can’t expect them to be.

Still, the problem is not making games more girl friendly. There are whole communities of female gamers, so it is obviously not an intrinsic problem with the gender. The actual problem to be tackled is in making games more accessible to girls AND boys who wouldn’t normally play. “Math is hard” isn’t just a problem with females, as I’ve said. People generally accept that casual games are supposed to be made more accessible to the soccer moms who play them, but I think that lowered barriers to entry are needed in normal games as well.

My own anecdotal evidence: a friend of mine once remarked that the interface for Harry Potter and the Chamber of Secrets on the PC was not intuitive. I didn’t notice the interface being a problem. Why? Because she doesn’t play computer games regularly and doesn’t know that the keys W-A-S-D are normal. I naturally moved my fingers to those keys whereas she was trying to use the arrow keys. It is not fun to be told by someone that you’re doing something wrong, no matter how nice they say it (and I distinctly remember being nice about it, for the record). Here was a kid’s game that was causing problems for an adult. How did children who don’t normally play games figure it out? Another story: I remember playing a game on the Apple II and getting frustrated with this same issue. I had to use I-J-K-M to move about instead of the arrow keys. “Who thought of that?” I remember thinking back when I didn’t know what “intutive” meant. I had to look up information in one of the computer manuals to find out how to move. The Computer was still new to me so I was already used to figuring out how it worked, but how many people would never play that game because they couldn’t figure it out?

I don’t think that game developers should try to cater to girls so much as they should target non-gamers. Female gamers exist and play mostly the same games that males play. It’s the people who don’t play games that need games that work for them. They need to know that math and video games aren’t painful, scary, or hard.

Categories
Game Development

Oracle’s Eye Planning

I’ve been working on the design of Oracle’s Eye and have been trying to do a high level breakdown. I’ve also tried to work with the smallest subset of ideas that would make the game functional.

I’ve identified the following basic entites:

  • Ball
  • Player
  • Exit
  • Walls

I have more details on what I need for each entity, such as functions, but I will likely post them at a later time.

While I want other things in the game, such as pipes and warps, those aren’t strictly necessary to make the game. They may be necessary to make the game fun, but to make the game work at the simplest level I just need those entities listed above. I don’t know exactly how long it will take me to try to make this game, so if I work on a smaller subset I know I can finish it. If it turns out that it was too easy and I was able to accomplish it in less time, I can always add to the game later. Obviously I can’t change the gameplay terribly at that point, but I can add small things. If anything, it should give me more experience when planning schedules.

My plan is kind of hard to create. These days I find myself doing something almost every night, and my nights that are free aren’t consistent from one week to the next. I can’t just make a daily schedule. I can make weekly goals, however. No matter what, I always have some day available, so I can just make sure that I know what to work on that day. By Saturday, I should have met the goals for that week. And since I know I won’t have more than one evening to work on the game per week, I need to limit the number of things I want to try to implement.

So here’s my plan:

  • By August 6:
    • Should be able to move player about room in four directions.
    • Should have room take an arbitrary size according to input (10×10, 12×9, etc).
  • By August 13:
    • Should be able to kick ball across room.
    • Should be able to end level by getting ball in exit.
    • Ball should stop when hitting wall.

Technically the above is all I need to do to make the game basically work. It doesn’t sound too fun, and with only two weeks it probably won’t look great either. So the rest of the month:

  • By August 20:
    • Can load a level/map from a file.
    • Create banked walls to redirect ball.
  • By August 27:
    • Implement pipes to redirect ball and to move around when pushed upon by player.
    • Implement warps to move ball from one to another.
    • Create two different levels.
  • By August 31 or September 3rd:
    • Add new object, such as a grinder or pit.
    • Add as many levels as I can.

I think the above plan is ambitious enough. There are obviously a lot of details missing, but since I know that the game will evolve as I make it, I don’t think I will have too many problems.

Famous last words. B-)