Something went wrong. Try again later

fobwashed

This user has not updated recently.

2818 398 76 606
Forum Posts Wiki Points Following Followers

Copy/Paste/Sell/Profit

Stop copying me!

Zynga copies. . . Bingo?
Zynga copies. . . Bingo?

Of late, there seems to be a heightened awareness in regards to copycat games. This is nothing new as copying and plagiarizing has been going on since the beginning of time. I recently read an interesting article on the subject by Dan Cook at GamaSutra on the subject. The basic jist of it is (at least as I understood it) that an individual or small team makes a game and they spend resources and time developing something new and then due to other copycat games, the creators cannot reap the full rewards from their creation. This situation where the creative portion of the game doesn't get his/her/their just rewards results in either them no longer attempting to create or not having the resources to create even bigger better things in the future.

A bad example, MineCraft

If only that ball had some. . . tiny wings -_____-;;
If only that ball had some. . . tiny wings -_____-;;

For example, take Minecraft. While they're doing fine since, you know, they've sold millions and made oodles of money, just bear with me in using them as an example. They make Minecraft, it gets big, and before they go about making a version for the IOS (which they now have and I'm sure made a killing on), the platform was swamped with minecraft clones. Even now, do a search on the AppStore for MineCraft and while the top hit is Minecraft itself, there are dozens of games that look just like it. Go hit up Xbox live Indie Games, and there are I think at least 3 games that seem to borrow heavily from the source and one of them I know has sold over 500k copies. Again, Minecraft isn't the best example since it's made so much money and is such a huge success, but you can see how a smaller game that hasn't yet gotten it's time in the warm cashy sun may be affected by not being first to other platforms. I think an even worse situation is one that seems to be happening with more frequency in that a game that is made and released for free (usually as a flash title) has it's mechanics ripped off wholesale, the aesthetics changed (though admittedly usually made to look much better) and then sold without any credit being given where credit is due. The reason why this seems like a greater crime to me is that the creator of the core mechanics gets the shit end of the stick in every way. No money, no credit. At least when a bigger title gets this treatment, the gaming community at large can point at it and say "Hey, that's just an Uncharted clone", or in the case of the terrible example I've been using here, "It's just a fake MineCraft".

So what? Sue?

A taste of their own medicine?
A taste of their own medicine?

While at this point I don't think that NimbleBit is suing Zynga for copy/pasting Tiny Tower but there are others who are taking action. For instance, Tripple Town's creators Spry Fox is suing Yeti Town, developed by 6Waves LolApps. They have a more legitimate case than most since LolApps was actually working with Spry Fox to bring their game to Facebook, and then canceled just prior to releasing their own version of the game. . . Suuuuper sheisty. While looking around, I thought one of the most ironically funny things (I hope this is what irony means) I read was that Zynga actually sued another developer Votsu for copying them. There was a settlement. . . I do feel that in extreme cases such as the Yeti Town one, suing is necessary and even in the case of Dream Heights and Tiny Tower, the two games are so damn similar that it should at least be brought to attention but what to do about it is still a huge question and as someone who's trying to make a game myself, something that may directly affect me in the future.

Soooooo. . . . then. . . .

till 2015 bitches!
till 2015 bitches!

I'm not really sure what the answer is. On one hand, if game mechanics could be protected legally, it hurts us consumers since nowadays, bigger games are made up of a ton of smaller games put together well. Hell, even something as simple as being able to play a game during loading screens is something I'd love in more games if only Namco hadn't patented it. . . Now imagine if every new gameplay mechanic were limited to being used by the creator. Regenerating health, ink ribbons to save, active reload, various types of cover systems, random loot, whatever. It'd be madness. Though on the other hand, in its own way, it really sucks that it's usually the little guy that gets screwed out of credit/money when it comes to coming up with something new and cool that the big boys can take and run with. It's a sad state of affairs. The best case scenario is pretty much to be first to market with your idea, and do it well enough that those copying you are only able to do just that, copy, and not improve.

These games get a free pass from me

Hold Z to target
Hold Z to target

While there will always be the possibility of new mechanics and innovations, it's near impossible for any game that releases nowadays to not have been inspired by another. Sometimes heavily. After all, "Good artists copy, great artists steal" and this is just as true today as it was back then. I do feel that once material improvements are made to a mechanic or style of game, it is its own game and no longer contemptible (Bayonetta). I also feel that to some extent, if a game is artistically unique, it's much more forgivable as the aesthetics or music of a game make it an experience different from the source material (Limbo). Another get out of jail free card is that I'm totally cool with a game being released on a platform when the original creator had no intention of ever attempting to release or sell the game on said platform (Tiny Wings). Oh, and obviously, if you're a part of the team that created the original, go ahead and make it elsewhere if you feel like it (Rock Band). That's all I can think of. I'm sure there's more but I'm spent.

What was the point?

There was none! Suckers!

6 Comments

Where the Hell is my Online Co-op!? Part 1 of ???

Have you ever played a game that had local multiplayer and wondered why the hell you can't play it online with your friends over Xbox live or PSN?

Play me with your friends, just not online...
Play me with your friends, just not online...

Or, other times, wondered why the hell it's taking so long for a developer to deliver that very feature in a timely manner since it was promised?

While I can't really speak to all games, I've not gotten a small taste of implementing some basic multiplayer into a game. The following is my own personal experience and is in no way comprehensive. Hell, I'm totally new to this so I'm sure I'm doing a lot of it wrong and badly, but I think some of what I've learned is fairly solid and should at the very least, explain some of what's going on behind the screen.

What I'm writing is in regards to XBL

The game I've been writing networking code for is currently being written specifically for the 360. I'm not certain what the requirements or overhead on PSN/PC games are but I'm going to assume that they're probably fairly close to the restrictions I'm currently working with. Still, I think it's a good idea to put forth that these numbers are for an Xbox Live game.

Latency and Ping

I'm sure anyone worth their salt in online gaming knows about the almighty ping and latency. Everyone's experienced a laggy game and I'll first get the basics out of the way. I've been playing online games since it was just starting out with dial up modems and even I had some revelations when it came to the actual numbers of why my ping is what it is. Those of you already in the know, pat yourselves on the back and scroll on down. For the rest of us, here's a quick and dirty breakdown of how your ping got to what it is. (BTW, ping is the time it takes from data to get from your computer, to another computer over the internet).

Light speed, still not fast enough!

First we'll start with the speed of light (186,282 miles per second), which, while fast as all shit, is still slow enough to measure. To travel a mere 1,000 miles, it takes 5 milliseconds. Also, we're talking about the speed of light here, not the speed that data travels down a cable. Signals travelling down fiber or copper network will slow to around 60% the speed of light. On top of sheer distance, data doesn't tend to go directly from one computer to another. Every router in its path will add around another 5ms. I'd say when I'm playing any online game be it starcraft, counter-strike or whatever, I consider anything below 20 ping amazing (with the server or host being in the same county), 30~40 very solid and when given the option stay away from anything higher than around 60. When I used to play more DoTA, if I had over 100 ping, I'd definitely notice the lag in between my clicks and the game's responses.

XBL recommends

The text involving implementing multiplayer into an XNA game reads that the recommended limit be 8kb a second. The reason for this specifically, I don't know but I do know that during the Halo 3 beta in 2007, Bungie Studios reported that 1% of consoles on Xbox Live have less than 8kb downstream and 8kb upstream. 50% had less than 42k downstream and 44kb upstream. Yes, 1% isn't much, but it does mean that for every hundred people who actively play online (since the data is specifically from a beta to a hardcore online focused FPS, I'd have to guess this number may actually be higher) will have a bad or unplayable game if you decide to break that recommended limit. On top of this, Xbox games are expected to function with at least 1% packet loss and 200ms ping.

Xbox doesn't even give you the entire 8kb...

Here's a breakdown of how expensive it is to send information, and how damn quickly you can fill that 8kb per second limit. Say you have a game that runs at 30 FPS with 8 players and you want to send the player's position (Vector 3 (X,Y,Z coordinates)), their velocity (another Vector 3) and whether or not they're doing something (a true/false boolean). Also, on Xbox, you always have to factor in the possibility of voice (since even if you're not using voice in this game, you may be in a chat lobby) adding an additional 500bytes a second.

that'll be 7(players) * 30(fps) * (12(vector3) + 12(vector3) + 1(bool) + 51) + 500(voice) = 19k.

Yup, sending those three simple things to 7 people in an 8 player game once a frame will put you over the limit two fold. Oh, and that 51 that's crammed in there, that's the header that automatically gets added to every packet you send which contains some basic data that all packets need. Specifically

20bytes IP header

8bytes UDP header

16bytes Microsoft Live Encryption

7 bytes XNA framework Overhead

so I suppose if you were to not be using XNA, you'll be saving yourself a whopping 7 bytes off the header that I'm fairly certain would be used up by something else in your own framework.

Anyway, due to that expensive overhead, sending absolutely no information and empty packets to 7 players 30 times a second would end up costing around 13kb per second. Still over the limit >,< Oh, and we still haven't talked about the possibility that your data isn't even guaranteed to end up where you're sending it, in the order you're sending it.

Packet Loss

It's somewhat shameful to admit, but I only just recently learned the difference between TCP and UDP. I've been setting up port forwarding for years just plugging in numbers, but never knew what the difference between the two were. Here's a very, VERY basic explanation of the difference. TCP is network data, that is considered reliable. What this means is, every bit of data sent TCP is confirmed and accounted for. If some data gets lost along the way, it will be sent again and again and again until the sender gets confirmation that the information was received in it's entirety on the other end. UDP on the other hand, is just fire and forget. One computer sends it, and we hope it gets to where it's going, but if it doesn't, meh. . . it's forgotten for all time and eternity. Now, the reason why all data doesn't reliably always get delivered? I don't know, but the typically, 2% of sent packets (little bundles of data) get lost with the high end average being around 10%. Oh, and when using UDP, data sent later may get to it's destination sooner than something sent previously or vice versa. Basically, it's a 90+% crapshoot that the data will or won't get to it's intended location, in or out of order when using UDP. Why doesn't everyone and everything just use TCP you may ask.

A SHORT AND LONG EXPLANATION OF WHY EVERYTHING ISN'T SENT USING RELIABLE OL' TCP

The short answer? Speed. The long answer? Since TCP always confirms that the packet has reached it's destination, there's that amount of extra latency. Any time any portion or the entirety of the packet is lost, it is resent. This takes time. In addition to that, TCP sorts packets in the correct order once it arrives at the location it was getting to. So, say you're playing a game and you're moving from spot A to spot D and you're sending TCP information at each point in that movement. The computer sends the information in the order A, B, C and D. The receiving computer, due to internet wackyness, receives A, then D, then B and finally C. The receiving end may already have the final destination (D) but will not acknowledge it until it has all the packets in between (B and C). There may be games in which the positions in between are necessary but in most cases where speed is more important than order (say any racing game or FPS), only the most recent position is required. Predictive algorithms will fill in the motion between A and D and when B and C arrive, they'll be discarded. In games where quick response is necessary, that additional latency is killer. If any of those in between packets were lost during a TCP type exchange, that'd increase the amount of latency to unplayable levels.

What does all this shit have to do with my goddamn co-op?!

Well, that brief lesson in network data was just a primer to put forth that it is goddamn hard to make a multiplayer game. Hell, when I started and began reading about all this shit I had to put up with, I'm blown away that games like Halo and CoD work at all. But, for now, we'll keep it stupid simple because honestly, that's all I know. I'll talk about what I'm doing to implement multiplayer into my game and even being as rudimentary as it is, how goddamn hard it is.

When I began writing this, I thought I'd just spit out some stuff real quick and explain the situation. . . but it's something I'd like to go into a bit more depth about. This being the case, I'm gonna have to split this up into a second post that details a little bit what goes into writing network code (at least my rudimentary shitty network code), and some more insight into how much hell it is to try to compensate for latency and lost packets. I'll be back later in the week as soon as I have time to write it out properly -_-;; Sorry to those who skipped ahead and found nothing!

20 Comments

I'm Makin a Game: Saves

What's New?

I've been up to a load since the last update but it's such a scatter shot of areas that I think it'll be hard to cover everything. I've started making notes in a separate document as I'm making changes and adding things which helps me keep track of what's going on to a certain extent. I'll try to hit the big notes.

Saving

The biggest of notes is that I've finally got saving and loading working correctly and in a hot manner. I'm working on both the PC version and the 360 version concurrently so this means I've got the save features working on both. Right now, it's still bare bones but I've got it all down to a point that I feel very comfortable with the system I've got set up and can choose to save whatever I want pretty much whenever I want. Saving is obviously a very important aspect of any game but I feel it'll be doubly so in my game as the mechanic will actually work with the gameplay. I don't mean this in just a basic, you can use tents to restore mana on a save point, or along the lines of say ink ribbons in old Resident Evil games. I've sort of decided that I'll hold off on revealing some core elements till I'm far along enough that I can show them properly so as not to spoil what I'm going for just yet. Anyway, In the short video I'm posting, you can see that the game can be saved at any point. It also runs in the background once the saving occurs so that on the 360, it won't slow anything down gameplay wise and can be used in a checkpoint fashion. Speaking of 360.

Xbox Live

I've implemented XBL into both the 360 and PC versions of the game. As far as I know, XBL has only been implemented into a scarce few PC games, and I'm not even sure if it's of any use so I may or may not remove it from the PC version in the future, but as of right now, you can hit the home key and bring up the PC version of the XBL menu with friends lists and whatnot. The 360 version has a bunch of back end stuff going on for saving as well. The press start screen is only there so that on the 360 build, you can choose what save device to use. Funny enough, you can save my non-game to the cloud =P It's got basic functionality such as asking to change save devices if the currently selected one has been removed (though who would do this in a real world situation I have no idea).

Continuing work on the dialog system

I've been putting more effort into the dialog system and it's turning out pretty nice. I'm still going to need to make refinements (and an actual interface) but the system I have for implementing the lines of dialog is coming along nicely. To understand the actual unique things I'm trying to do with dialog, as with the save system, I'll have to show it once they're all in place together. I'm beginning to see why developers rarely show really early anything having to do with their games as it's embarrassing to show off pieces of an incomplete puzzle. While I'm also keeping this blog as a means to track progress personally, I also feel very self conscious of my work and really don't like how downright shambly it is at the moment. Especially the combat. . . That's sorta fallen by the wayside as I've gotten more and more into other aspects of the game, but seeing as how they're all equally important to me and to the experience I'm trying to create, I don't think that's really a bad thing.

Improvements to Loading

Previously, the loading would just be a fade to black then a fade back in. It's not easy to tell from these videos, and especially on PC since load times are non-existent on PC but some of the changes I've made make a pretty big difference on the 360 build. The biggest difference is that previously, I had the game fade to black, and THEN begin to load the next stage. The way I've got it set up now is a separate thread will start to load the game as soon as the fading begins. This actually makes the load seem a lot shorter since all that fading time is now loading time. Also, I've restructured my loading class so that I can run whatever I please on a separate thread as the loading is taking place. I expect for loads to take much longer as I add more content (textures, sounds, music, etc) so now I'll have an area to play around and give the player something interesting to do as the game is loading. Depending on how long the loads end up being, this can be just a variety of text (Call of Duty, Bastion) or something the player can actually interact with (Assassin's creed, Bayonetta). The player class is never released, so I don't think it'd be difficult to allow something like that to take place. The boxy fade in and out is just something I threw in as an example to someone else making a game that wanted to know how to do it.

More Back End Boring Stuff

As I'm doing all this, I'm constantly reading up on and trying to learn more about game design and programming. I've come across some really great stuff having to do with pathfinding and AI. This lead me to breaking off any objects in my game that have AI into a separate subclass. I've also learned that it's more efficient to run AI/Pathfinding on waves of enemies instead of all of them at once. What I mean is, if I have 50 objects that need to check paths, ai, etc, it's better to run say 10 of them per update (which happens 60 times a second) rather than all 50 objects every update. I've set up that whole shebang and it was an ordeal at first but now that it's implemented, I feel much more comfortable having the AI do some more complex stuff without worrying about it really slowing down the game. The pathfinding stuff I've been boning up on is also really damn interesting. If you're interested, look up A* (A-star) and you'll realize it's used for almost every game you play from civilization to starcraft to uncharted. Really great stuff. I can't wait till I can start designing some real enemies rather than mindless potatoes that just move towards the player and try to attack.

Wanna Help?

If anyone has some free time and wants to do something stupid for fun, I'd be much obliged if any of ya'll could record a couple lines of VO. Pretty much, I'm going to be using just greeting clips for NPCs to give the player a feel for the voice without voicing the entire thing. What I'm specifically looking for is maybe a neutral greeting, a happy greeting and an annoyed greeting. While it most likely won't make it into the final game, I need them for testing purposes since I need to start building it into the dialog system soon and I feel sort of silly recording a bunch of lines myself =P Anyway, if you're interested, just send em my way and I'll be sure to plug your name in any vids they appear in and in the credits if they actually get used in the game right proper -_-;;

24 Comments

I'm Makin a Game: Dialog System

So What's New?

Aside from a hundred fixes, tweaks and little heres and theres, I've got the core of my dialog system in place. It's not pretty, but nothing is at first.

Give me the short version

Basically, I want character interaction and story to play a large part of the game. This being the case, the dialog between NPCs and the player is important to me and I wanted to do something a bit more enjoyable and engaging than what you tend to find in most games. I'm going to actually have a lot of game relevant (experience, points, game mechanics) things inserted into talking to NPCs to keep it from just being a way of getting the next plot point or quest, and actually being something the player will enjoy doing. Along side your basic dialog options and responses, the player will build up a vocabulary that they will be able to use to question NPC's about various things. Depending on whether or not it's relevant, they'll get proper answers, or just get people angry and annoyed. How many random ass questions would you be willing to answer before you decided you didn't want to talk to some weirdo anymore. *tangent to follow* In any case, the core is in place. The player will collect vocabulary from the world, from NPCs, and wherever else I feel like, and then be able to use them in conversations to try to get more information or just to see what people have to say. Which is what I really hope players will use it for.

Tangent. Not exactly relevant to the game

Today I ran into a goddamn druggie. At least, I think he must be a druggie to have messed up his mind to the extent that this guy was messed up. He kept asking random questions about the exchange rate of Korean Won, and about whether or not I'd invest in him to make money and all sorts of other nonsense. Eventually, I just told him to leave me the hell alone. Luckily, I'm a fairly big guy (not fat, I'm old but I can still bench over 300 =P) so I wasn't exactly intimidated by him. . . but at the same time, you can't help but have a bit of fear when it comes to someone who is actually insane. Because, you know, they're actually insane. Anyway, I can't believe I just now realized the parallel between that experience and what I've been putting together in my game -_-;;

Slightly longer with more details

While I don't want to spill all the beans on how this thing is going to be put together since I have no idea how long it'd take to finish the game and as ridiculous as it sounds for ANYONE who's not someone in the industry to say, I don't want my idea to pop up in a different game before I can release mine -_-;; What I can show though, I've pretty much shown. Obviously, it's just the core of the system. I've got a pretty good idea of how I want to display the information to the player. Up till now, I've really wanted to have voice acting in the game. . . but I've come to the realization that it's just not a reasonable thing for me to try to do. At best, I think I'll be able to have a few lines voiced per NPC such as the greeting so that the player will at least have an idea of what they might sound like. That's prolly what I'll be going for and since I don't personally know that many people who'd be willing to (or even have the talent to), I'll prolly end up fishing the internet for some pro-bono voice work with the payment being in the form of being in the credits =P

I need to really emphasize that this is in no way representative of how the dialog system will look once finished. I just have everything scrolling and repeating at the moment just to make sure that all the responses and lists are populated properly. It looks freaking awful at the moment but the only thing I'm really displaying here is that I have a dialog core and that it works =P I'm a stickler for UI so I'm gonna try to polish this to a shine before I'm happy with it =)

That's about it for now

As always, I've got plenty to do and not nearly enough time to do it. I can't say for sure what I'll be working on other than just knowing that I'll be working on the game. Almost all the critical core components are in the game at this point and it's only a little longer before all I'll need to focus on is the content. E.G. Combat moves, enemies, story, artwork, hud. . . . . oh man, the list goes on forever. Also, sounds. . . I'll need plenty of sound effects and oh god. . . the music. Anyway, it's comin along. slowly. but coming. Btw, this new system completely replaces two separate older quick and dirty hashes I put together. Right now they're sitting in a folder in my game labeled "Trash" but I can't bring myself to delete them. Close to two weeks of coding is a hard thing to delete with a single keystroke. . .

Thanks for reading, and I'm always open to suggestions, comments, criticisms, etc.

EDIT: BTW, I'm sorry about the ridiculous bloom filter that's currently on. It's not going to be used that way in the final game. I've just been experimenting with using pixel shaders recently and I forgot to turn it off when I recorded the video.

11 Comments

A sad revelation

Might as well mark this day down as the day I realized that I'm more than likely going to have far too much dialog in my game to really consider having VO work. At least, not for all the lines. I'd still love to get some in just because I love VO, but with the limitations on the size of XBLI games coupled with what I think will end up being an immense amount of dialog, I don't think I'll be able to do it. /Emo

6 Comments

I'm Makin A Game: Behind the Scenes Boring Stuff

What've I been up to since the last update?

I don't have a video to show this update since as usual, the bulk of what I've been doing is behind the scenes stuff that won't really be something you can see. That being said, I figured I'd do a write up of what I've been doing for anyone that's interested. . . Not sure who would be, but I know I would if someone else were to write it so here it is.

Save room for more

Resource Management

As usual, I've been making a lot of improvements to existing code and how everything works with each other. The biggest changes I've made have been to the way my game handles loading and unloading content between levels. It'll now ditch all textures and sounds and whatnot that are no longer necessary to hold in memory between level changes and load up only the files it needs to work what'll be up next. This all takes place during the loading screen. At this point, it's not necessary since I'm working with such a low amount of textures/sounds/resources but later when I'm building things out, have more things going on and all that jazz, this'll prolly be a bigger deal. So I wanted to put a system in place to handle it all before it became a problem. I've got a pretty good idea as far as what types of things I'll need to be loading and unloading so I've built it to handle more than I'm currently using and also set it up in a way that makes it easily expandable.

Loading Stuff

There's been a lot of changes to what goes on during the load screen behind the scenes. Since I'm disposing of no longer used textures, during the load of the next level, I have to check to see what items I need to have loaded for the game to run. These checks are pretty quick and they work in conjunction with my content management stuff. I've also made some large changes to how items/objects are spawned and respawned. I'll get more into the details here when I'm finished and things are set. Right now, I'm trying out various things to see what works best -_-;;

Tools are goddamn important

Level Editor Improvements

As I've been adding new classes and rejiggering the way my game is structured, I've been modifying my level editor as well. Once again, I'm very happy with the way programming works. For instance, I was having some issues with figuring out which collision rectangles were effecting which textures when things go invisible and it was a chore to individually click all the textures to see which ones were which. . . so I went ahead and wrote in code to allow me to see what things are associated with what things.

Main Edit Window of Editor
Main Edit Window of Editor

So for instance, I can either click the rectangle, or a texture, and all textures/rectangles that are associated with the selected one will be shown. In this picture in particular, I selected one of the foreground leaf textures, and it shows me which textures are in the same group of textures that will fade when the player runs into the also selected collision rectangle. This is also true for spawn rectangles, and pathing. If I were to click one of the paths, all NPCs/Enemies that use that path would be shown. Also a lot of little ease of use things such as a ruler for measuring pixels. I used to use a grid or just reference other textures that I knew the size of, but figured, what the hell, why not make a quick ruler tool? And Bam. As I've been doing all this, I've come to realize how damn important tools are for generating content and will be expanding on this greatly.

No Caption Provided

This is what I'm currently using to place enemies on the map. I can choose the type of enemy, and set all the various variables to my liking. Previously, I had to manually find the path I wanted to link to the spawned enemy, type in the enemy type and all it's other assorted variables, but again, I spent some time building it into the actual editor and now I can just fill out clearly labeled boxes, check off what I want, choose from a list of available paths/rectangles/etc and just generate it. I can save it, and test run it in the game immediately. Tools. Tools is the key. It took a bit of doing to make it, but now I've got this sort of interface for all sorts of things including NPC, player, camera, various interaction rectangles and other goodies. In the end, the time I save with being able to quickly create large map changes will pay for itself in time spent actually creating the tools to do so. I very much expect the tools to get much more complicated moving forward but I've (hopefully) planned ahead for expand-ability so it shouldn't be too difficult.

Spritesheet and Animations for Levels

This is something I've been working on for a while, and pretty much I've just been improving on parts of it. I think I'm pretty much done with updating this section of the editor. It now loads up sprite sheets using the image and an XML file. It'll load up every sprite, properly name it and set all it's properties so that I can just drag and drop it into the level. If it's animated, I'll get all the controls such as which frame to start on, how fast it should animate and whatevs. In addition, it was taking a long time to load up and I figured out it was because every time I changed directories, it would be tearing up the spritesheet and making thumbnails for each piece, every time. I went ahead and set it up so that it'll do this once, and save all those thumbnails in a directory. Now, it'll do it once and in the future it'll check to see if the thumbnail for that particular item already exists. If it does, it'll load up existing thumbs instead of creating new ones which reduced load times on folder changes by like, iono, 90%? It'll also run checks to make sure that even if the file does exist, it's up to date with the spriteSheet in case I've made changes.

Other changes I'll need to make eventually

I'm sorta looking forward to incorporating particles into the level editor. For things like falling leaves, steam, etc. Eventually I plan on being able to place all that stuff from within the editor as well. Other than that, I guess it's just whatever I need. Maybe cutscenes? I do know that I'll prolly be setting up NPC dialog from within the editor but I've gotta get that stuff set up in the actual game before I start writing it into the editor.

Reduce redundancy

More generalized lists for fewer iterate calls

Prior to recent changes, every update, my game would call through a list of enemies, a list of npcs, a list of interactive objects, projectiles, the player, etc. Basically, a ton of freaking lists. Everything was separated into their own group of things to update. This in itself isn't a huge issue, but it got to be pretty messy when I would have to check collisions between everything in their own lists, and also in every other list. It was a damn mess. I've since figured out a way to group EVERYTHING that has any chance of interacting with each other, into one master list to check through. This was maybe one of the single greatest things I've done up to this point because it simplified everything. Collision between objects for one, is incredibly easy now.

The Technical Hows

This is specific to XNA, but I'm sure can be used for any C# or object oriented programming. Since all my collidable objects are reference based objects, the master list I created is just a list of a base class I created that contains the specific things I need to make the types of checks I need. Every type of object still has it's own individual list for when more type specific actions need to take place, but for general things such as 'are these two things touching', every separate list on level creation is loaded into the master list. Moving things from one list to another is easy as the master list is public and can be accessed from anywhere in any class due to the static nature of the main game engine class containing that list. So, for example, when the player throws a bomb, the bomb will add itself to the master list. This will insure that it will be updated with everything, collide with everything, and be able to damage everything else in that list. When the bomb explodes and is done, the bomb's last action will be to remove itself from the list. It will no longer be updated and all this without the need to check if it's still active before updating or drawing it. More than anything, I love that I no longer have to make all those checks to determine whether or not something is active. That alone will save me many, many checks because it used to make that check for every object, on every update and every draw call. This is prolly something that everyone who knows what they're doing is already doing, but hey. I'm new to this and figuring out this basic stuff makes me happy =P

That's it for now

I've got so much that needs doing that it almost seems overwhelming at times. I think it's better to have a bunch to do and constantly be making progress rather than being stuck not knowing what to do next. . . I think. I'm pretty sure I'm nearing the point where the engine itself should be pretty finished and I just need to start adding content. Enemies, moves, lots and lots and lots of art. . . Sounds. Jeebus. I still would love to have VO but I was thinking, I only have like 3 or 4 friends that might be interested in doing it, and of them, I'm not even sure that they'd be good enough at it. You know, not make something that sounds like it's a remake of the original Resident Evil -_-;; I'll be back with more updates as I make progress. I'll try to make have something to show in video format. I feel like I've forgotten to mention a lot of things that I've already forgotten I've done. . . but I guess it'll come up sooner or later if I did. Sorry for the wall of text.

7 Comments

An option all games should support. [rant]

This has happened to me in almost every game

that allows you to custom build a character. Specifically, a custom character in which you're allowed to alter the details of your facial structure.

It's like they're trying to hide the fact their characters look bad
It's like they're trying to hide the fact their characters look bad

In most games, you get to choose out of a set of pre-generated faces and bodies, or select a character or whatever and I never have an issue with those games. I pick the character I want to play as, and don't give it any more thought. In games that do give you full control over your appearance such as Fallout, Mass Effect, Dragon Age, Oblivion, and most recently Skyrim and Saints Row the Third, I really delve into this stuff. If I plan to play a game as myself, with my name, and making the decisions I would make in the presented situations, I tend to try to recreate my own face in the game as best as possible. Usually to somewhat sad results. I'll play the game with my newly generated me, and typically, a few hours in, I'll find a glaring flaw. Something that just doesn't look right. Sometimes it's the game's fault in the way it causes the face to move, and other times it's my own fault for making my cheeks too hollow, or my chin too short, or whatever.

The option that doesn't exist. . .

If only the eyes were just slightly closer together.
If only the eyes were just slightly closer together.

For some awful reason beyond my mere consumer comprehension, these games will not allow you to change your face. When you are allowed to change aspects of your appearance, it's usually just your hair, or tattoos or something along those lines, but almost never your face. I have no idea what would cause a developer to not allow this as I don't think it really has any impact on the game other than allowing the player to have a better experience. In the case of Dragon Age and Mass Effect, I have literally played the game for a few hours, then during a cutscene, noticed something that is just wrong, and from then out, can not unsee it. Every time my character appears on screen, I see this flaw and only this flaw and it drives me mad. Sometimes I can just live with it and press on (which was the case in the Fallout games) but in other cases, the character is front and center in almost all scenes and I have to resort to restarting the game from scratch.

If only it were my own fault

Sure, I look fine from this angle
Sure, I look fine from this angle

If this were a fault of just my shitty ability to make a character, then this complaint would just go into the pile of "shitty things people complain about because everyone loves complaining" but I feel that I have a slightly better position to lob this out there because of some general character creation system flaws. Specifically, when you're making your face, games tend to only show it to you from a straight on angle. Sure, most times, they'll let you rotate the head 360 degrees and from a head on angle (pun?) it looks just fine. Problem is, the game will throw all kinds of angles at you with all kinds of lighting and it's in these non direct angles that the flaws are noticed. Things look just fine until you're looking at the face from an off angle and below, or from above. Sometimes you can't tell that a cheek is too far out or not out enough until you're standing under a light. . . Sometimes your lips look perfect, until the character opens his/her mouth to speak and then just. . . balls. Your lips are totally jacked. Oh, and some games outright make it difficult to see what you're doing with either crappy lighting, limited angles or some unholy mixture of everything. Just give us more angles to examine our character, maybe a few different lights and a toggle to make the thing's mouth move as if it's talking. Then I only have myself to blame for my monstrosity.

Why? Why not let me change?

My biggest gripe with all this is just that almost all games refuse to allow you to change your appearance after you've created your character at the very start of the game. You're locked in for what might end up being 50 to 100 hours using something you thought you wanted at the very start of the game. But why? It just doesn't make any sense. Why not allow the player to alter their appearance? It doesn't have any effect on the game. I recently started playing Saints Row the Third and had this problem arise where in game, the face looked funny and it was driving me nuts. Luckily, you can go to a plastic surgeon and get it all fixed for a small fee. Speaking of small fee. . . I guess you can also change your appearance in Dragon Age 2 if you either purchased the game new, or buy it's DLC. Fuck that game. On the flipside, I'm really enjoying and loving the hell out of Saints Row. Unexpectedly delightful. And you can (and I have) change your damn character's appearance down to the sex and voice at any point in the game. Kudos.

[/rant]

20 Comments

Do people being made fun of, realize they're being made fun of?

I was watching this video

Which I felt was humorous to be sure, but also a sad and accurate portrayal of the "vocal minority" in the gaming community at large and began to wonder. Do the people who are being made fun of, realize that they are the target of the joke? And if so, do they laugh along, or being the type of person they are, do they get angry? Are they conflicted? Can you laugh at yourself for being the way you are? And then, it sort of spun off into other areas. For instance

What do racists think of the way they're portrayed in popular media?

I'm a racist AND a redneck!
I'm a racist AND a redneck!

Do they watch these shows and cheer at scenes that are made to be jeered at? Can they appreciate characters who start off racist but eventually see the error of their ways and become better people? If you are legitimately of the same mindset of the character, is the entire show/episode/movie a completely different experience than for someone who isn't?

How about gamers?

This is actually funny. To me at least.
This is actually funny. To me at least.

In most cases, when the butt of a joke is that the person is a gamer, I'm usually laughing along rather than feeling like I'm being laughed at. I feel like things have gotten to a point where there isn't as negative a stigma attached to being a gamer as there was say 5 to 10 years ago. I might be singing a different tune though if I were a morbidly obese, extremely socially awkward fellow who's life revolved around an MMORPG. If that were the case, maybe I'd be a little more offended but in my personal case, prolly not because I'd be able to see that it's funny because it's true. . . I laughed out loud in 40 year old virgin during this scene. Btw, I'm an asian gamer with a lot of games.

I looked so hard for a movie clip, and it doesn't exist...

Anyway, for the most part, I think smart writers know who the target audience is, and can write in an in-joke type of fashion. Though, you do occasionally get this.

I tried so hard to find Sarah Silverman at the VGA, but I think ninja assassins have somehow deleted it from the internet. Seriously, it's crazy. The video doesn't exist. . .

Anyway, back on point. Did I even have a point?

No. not really. I was just curious whether people who rage about review scores see these types of things portraying them as, I dunno, crazy people and realize that they're sort of crazy. Do they laugh along? Or do they rage some more? Are they embarrassed? The world may never know. I'm hungry.

19 Comments

So you want to learn to program?

What the hell is this huge block of text about?

On rare occasion, I'm asked about programming and how I learned what I've learned and if I have any suggestions or whatnot so for anyone interested, here it is. This is pretty much, the process I went through, and my recommendations for anyone thinking about doing the same. I am by no means a reliable source of information, and I take no responsibility for anything resulting from this. Unless it's awesomeness, in which case, I'll take as much credit as you'll give me.

If you have absolutely no programming experience

then you're just like me when I started. I came into this knowing pretty much zilch about programming and/or any languages. The closest thing I'd ever done to coding was about 15+ years back when I "programmed" snake into my TI-86 graphic calculator by copying lines of code into it from a printed out sheet. I think that anyone can become proficient at anything as long as they invest the time. Some things will be harder for some than others but with the right commitment, short of an actual disability or physical inability, I feel anyone can do anything. Maybe not exceptionally well, but at least competently. Under this line of thinking, I took it upon myself to create a game and if you want to, you can as well. I think.

Where to begin?

There are probably as many ways to learn as there are reasons for wanting to. Also, depending on your current situation, (work, life, whatevs) your options will vary drastically. For myself, I have a full time job and can't afford to just quit and go take classes at some school. I think schools that are actually focused on teaching the art of making games are awesome, and I'd love to go, but I realistically can't. The route I took is self teaching. Once I decided that I was going to go with using the XNA framework and learn C#, it was pretty easy to find tons of tutorials and sources for learning on the internet. If you're a complete noob like myself, I'd recommend downloading Microsoft Visual Studio Express (it's free and awesome) and then running through a few basic tutorials on youtube. You'll literally start with extremely rudimentary things like getting a program to start, then saying "Hello World".

Syntax is King

Once you've tried a few tutorials and building the most basic of programs, I highly suggest actually learning the language. If you've ever tried learning a foreign language in school, learning C# is sort of like that. . . except about a hundred times easier. I know how to write, speak and understand 3 languages. 2 very well, and a third on about the level of an 8 year old -_-;; I'd say the hardest part of learning a new language is memorizing the alphabet (if it's not the same as English), followed closely by learning the grammar and syntax of the language. Finally after tackling those, it's expanding your vocabulary so that you can actually use the previous two things to USE the language. That's oversimplifying, but you get the idea. Learning C# was a piece of cake. For starters, you already know the letters and alphabet. The hardest part then becomes learning the rules of the language and how to construct sentences that make sense. Now, initially, this is pretty daunting. Everything seems like goddamn gibberish and nonsensical but as you begin to learn what's going on, you'll begin to realize it's all very clear and makes perfect sense. Everything has it's place and everything always does exactly what it's supposed to do. The entire thing breaks down into simple math, and logic. Hell, you look at any C# book, and you'll know the core of the way the language works within the first two to three chapters. After that, it's all about expanding your vocabulary.

Suggested Reading

Aside from the amazing amount of free information available on the internet, I suggest the following books. For starters, Microsoft Visual C# 2010 Step by Step by John Sharp. This book was written for people who have zero programming experience and are learning for the first time. If you can get a good grasp on the first few chapters here, you're more than half way there. A very nice side book to have that is specifically for C# is the C# Pocket Reference by Joseph Albahari. It's a pocket bible sized little book that gives the most concise and to the point description and examples of everything C#. It's basically cliff notes and I reference it a lot when I just need to remember one little thing and don't want to go searching through a huge book to find it. Also, I can carry it around and browse through it frequently so it's mighty convenient. Once you've gotten your feet wet in C# and want to start diving into making games on XNA, I suggest XNA 4.0 from O'Reilly by Aaron Reed and XNA Game Studio 4.0 Programming by Tom Miller. Both these books will sort of assume you're new to programming but won't cover C# as in depth as the previous books. They will however, get you up to speed on XNA which is pretty much, more vocabulary/words for you to use to help you build your game.

What I mean by Vocabulary

Once you know the syntax, you have the core of it. You can build out anything you want from what you have but it'll be damn difficult. That third language I know, I can survive with it, but I'd have a hard time telling a story. I'm limited by my vocabulary -_-;; It's sort of the same way with C#. The words you learn in C#, are all things built using the same tools you already have, and have code behind them that you can look at, but really, it's just giving you the result without you having to put all that work into it. Say for example, I were to tell you about this thing, that is alive, and it has a warm body temperature, and it breathes air, and has live babies. . . or I could just say mammal. It's the same thing with C#, instead of writing out something like "(int i = 0; i < list.Length; i++)", you can just write "foreach()". That's sort of a bad example but there are things that would take you lines of lines of code, that can be condensed into a single word. In fact, once you get further into it, you'll be making words of your own called objects. If there is a set of lines of code, that you'll be using more than once, you can group those lines yourself into your own word, that you can call at any time whenever you need it. All XNA is, is a book filled with words you can use that have been made to make life easier for you. That's pretty much all any framework is. C# has an extensive amount of vocabulary and even now, a year+ in, I'm still learning new words that are built into C# itself that make my life easier. A lot of times, when I learn something new, I realize I could have done something better so I'll go back and fix it and use it in the future. You never stop expanding your vocabulary either because you're learning existing words, or creating your own. It's when you start creating your own that things get really exciting =)

Making Games

With all that, you're pretty much ready to make whatever it is you want. I've already blogged about how you can do anything in programming and I still think it's true. At this point, or before you reached this point, it'd be a good idea to peruse the XNA forums and also download and dissect the starter kits they have available. One of the biggest things that helped me throughout learning the language was actually using it as I was learning. If you go back to my earliest videos, you can see that I was coding as soon as I could. Start creating as soon as you can, and just keep at it while learning at the same time. You forget words you don't use -_-;; In addition, I recommend going through the forums at the XNA site for questions other people have. The community there is great and a lot of times, reading other people's questions, and the answers they receive will help you out in the longrun. Sometimes, it may not seem even remotely related to what you're currently doing, but the mechanics of it are all the same so you may figure out something else that seems to have nothing to do with the question being asked. . . that sentence doesn't make sense. Anyway, that's it.

27 Comments