game-programming

anonymous asked:

Hi, my question is why would a developer lock a game at 30fps? I read that the new batman game was locked at 30fps for computers.

I’ve received a number of questions about frame rates and locking lately, so I thought I would try to answer it. At the core, it’s a technical problem about how much time you can set aside to do your calculations, and it isn’t very easily solved. This is likely going to be fairly lengthy and possibly technical. You have been warned.

Keep reading

I thought I couldn’t explain game programming but I can.
Tickle your tummy with a feather
blindfold yourself
now stab yourself to try and relieve the itch,
The stabs leading up to you finding the itch will be the most painful thing ever and when you find the itch the payoff feels so good, not because you have found the itch - but because you can finally stop stabbing yourself.

How are video games made?
By looking at this code for a day trying to figure out where a rounding error is coming from, and I love it.

Everyone should have a thing;
I don’t know how artists manage to paint or how writers write books or how musicians do their thing. Code is my thing,
it’s fundamentally collaborative and requires a weird kind of logical creativity, and I get to make video games with it.
The downside is it’s hard to explain this to people.

anonymous asked:

I am building my first game, and I have ran into a problem. Do you remember how in the original Zork you could move around the world? While the only way I can figure out how to allow the player to do that is by using goto statements to jump to different parts of the game depending on which direction you want to go, and storing each "room" as a variable in a 2 dimensional array. Would you know how to go about this without leaping around the software like the horse from chess?

I’m going to tell you something that you may not want to hear immediately, but will be incredibly important moving forward as a developer and programmer.

Separate your game’s data from your systems. Don’t use code to specify things that should be data. If you do, you’ll end up with stuff that’s both incredibly difficult to debug and incredibly difficult to add new content. The code should determine how something works. The data should be what the systems work on. Define the data separately, and have a set of generic systems to handle things like traversing your map.

If you continue along the path you’ve already started, you’re probably going to end up duplicating a lot of code and that’s incredibly prone to bugs. Imagine that you’ve got some block of code that does some task that you need done. You might copy and paste that code wherever you need to do the task because it’s easy. Let’s say, however, that you discover a bug in the way you handle the task and need to fix it. You now need to find and fix it in every single instance that you’ve copied and pasted that block of code. If you miss some of them, that means that sometimes you’ll get the correct results and others you won’t, and then you’ll have to spend even more time debugging. 

Don’t make it an elaborate system of gotos. Instead, think about creating a player object and storing the player’s position within that object. Create room objects, each having its own set of exits and contents, as well as its location. Each room should have a number of common attributes - some set of exits, contents, features. Then you can have individual (unique) rooms that all inherit the ability to have these common features. Once you build the individual rooms (the data), you can add identifiers to them and put them into a data structure that you can query. This way you can have the player object move independently of the rooms while keeping track of which room the player is currently inhabiting. Once you know that, you can go back to the structure that holds all of your rooms, and find the inhabited room, and then ask it where to possibly go. This makes it easier to build a maze out of individual instances of interconnected rooms without being limited to a two dimensional array. You can then build navigation into the player object itself, so that it becomes a series of requests.

  1. Player wants to go east.
  2. The game tells the player object “I want to go east”
  3. Player object asks the room it is currently in “Can I go east?”
  4. Room checks to see if there is an exit to the east. No, there isn’t.
  5. Player object says “Nope, can’t go east.”
  6. The game relays to the player that there is no eastern exit to this room.

This way you can limit what the player can do to a set number of tasks. This will make debugging a lot easier - if you can determine what a player can and cannot do, then you can easily recognize when the player tries to do something that shouldn’t be possible, and handle those cases gracefully. Keep your data separated from your systems. That way you can create new data fairly easily, and new code fairly easily, and one breaking won’t necessarily break the other.

5

PITFALL PLANET IS NOMINATED FOR BEST STUDENT GAME AT IGF 2016!!

Our whole team is making the deep plunge to San Francisco next week to attend the conference. If you’re attending GDC please drop by the IGF booth and try out our little co-op puzzle adventure game!

We are hoping to release in April on Steam! The game is basically complete, but there’s a lot of little things to tie up and test.

Roles in the Industry: The Graphics Programmer

Not every programmer works on gameplay. There’s a whole lot of them who don’t ever even get close to the rules of the game, or how it feels to the player. Some of them spend their time bringing the hardware to heel and harnessing its power. Others solve networking problems, allowing players to play together across thousands of miles. And then there are graphics programmers, the ones who are absolutely dedicated to one task - making things look and perform better. So today, I’ll go into a bit more depth on just what it is these people do.

Keep reading

youtube

So, my studios first big game is gonna be hitting Steam for sale on Friday. This is such a big deal for all of us at the studio and I am so excited to see the response. If you want to check it out, this is the link to our steam page: The Sun At Night

anonymous asked:

Are there any books you would recommend to a game designer? (doesn't necessarily have to be on the topic of games!)

Sure. Here are a few books I like across various topics:

Game Design specifically:

Programming specifically:

Not about design or programming specifically, but still very useful:

Note that these books aren’t necessarily authoritative, nor are they always applicable but they are useful to read through just to get a different perspective on things and to work into your repertoire. If you do read them, try to understand what circumstances they’d be useful and how to apply the principles conveyed therein in a general way. 

patreon.com
Spirit Macardi is creating Games and related content
Patreon is empowering a new generation of creators. Support and engage with artists and creators as they live out their passions!

So I’ve been laid off yet again. My manager at this job said I wasn’t fast enough at it… Even though I was so fast that I’d gotten everything done nearly a week in advance, so I’m thinking they just wanted to get rid of me for whatever reason (joke’s on them though, I didn’t return the box cutter they gave me :P).

I’m taking it as a sign though. While I’d been working I had less time and energy to devote to my modeling and programming efforts, and in these past few days of unemployment I’ve already made greater strides than I’d managed over the course of months.

As such, I’ve set up a Patreon. I’m not going to use it to hold my work for ransom behind a pay wall, but rather to allow me the time I need to keep learning and creating while still being able to pay my bills. Even if you can’t or simply don’t wish to donate though, I’ll still keep working to both finish the Klonoa 3 fan game and to move on to hopefully create original titles!

There’s more information in the link above. Any amount would be greatly appreciated. Even a simple reblog would be a huge help as well!

Questions and Answers

Last week I was interviewed by valeofhearts about my video game development experience. It was really cool that he reached out to me, and I was glad to answer his questions. You can check out the interview on his blog, but I’ve also included it here with some additional pictures. I expected my answers would be edited, so please forgive me if I ramble a bit and my grammar doesn’t line up!


What inspired the retro graphics in The Night That Speaks?

The Night That Speaks was sort of invented by accident. Game Boy Jam was going on during the time, and someone created this unity package that rendered 3D-scenes in a low-res, gameboy-esque style. I saw it on Twitter (http://roguenoodle.itch.io/gbcamera-for-unity …) and thought it would be cool to experiment with. I was feeling sort of exhausted that day, so I took a break from my main project to play around with the package. I recently had taken up an interest in horror games, and I thought that the low-res style would make it easier to create a spooky atmosphere without a ton of detailed 3d-models. I started building a basic room in Unity and set up some old-fashioned first person controls. I experimented with different lighting styles, shadows, edge-detection post-processing techniques, particles, color-ramps, and textures to see what looked good through this low-res filter. I kept playing with these until I found something that looked really cool. Then, I grabbed a free model of Shrek, and dumped a NavAgent on it so it stalks the player, then sent a build to my friends for a quick laugh. They thought it looked pretty cool, so I decided I’d devote the weekend to making this as complete a game as I could with the time I had. A friend helped me make a spookier monster than Shrek for the game, and then, that’s how The Night That Speaks was born!

The initial prototype featured Shrek. Smash Mouth played in reverse as it got close to you.

What first interested you in game design, and how did you get to where you are now?

I’ve actually wanted to make games ever since I was a kid. I loved playing games that let you design your own levels, and I eventually started using a free RPG maker tool (called OHRRPGCE) to make a much of small adventure games as a kid. As I went into highschool, I started using Game Maker to make more complex games, and then I went to university for Computer Science, which really helped flesh out my programming ability (I then used XNA to make most of my games). While I was in school, I made a lot of small games in my spare time. I think a great way to improve at game development is to just make whatever you can and as much as you can. It’s really rewarding and you’ll start learning a lot.

I made this game in Grade 5 with OHRRPGCE. I still have this backed up!

What do you find helps inspire or spark creativity for you?

Coming up with ideas can often be the hardest part of game development, and I don’t know if there’s any easy formula for creativity. Sometimes, I’ll see something in another game, and want to create it myself, but in the process, I put twists on it to make it unique or more interesting. Sometimes I’ll go through a list of games that I like, and then mash them together in my mind, and imagine what the result would be. Sometimes I’ll thinking of an everyday activity and imagine how I could build a game around it. Sometimes ideas just come out of nowhere! Often, I like developing prototypes by just throwing random things together and seeing what comes out of it. If it’s bad then I’ll scrap it, but if it looks promising I’ll keep going.

Our game jam game, GOATA, was the result of imagining what Terraria and DOTA would be like mashed together. 

How do you and your team come up with graphical styles for your games?

How do we come up with graphical styles? Like the creative process, there’s no clear answer. We take inspiration from other games and media all the time. When working as a group, we’ll often say, “Oh I’m imagining this game to be a similar style to so-and-so game.” Sometimes we’ll do a quick sketch of what we want the game to look like and share it. Like most parts of game development, we iterate on the style as we go on. When considering styles, it’s important to consider the cost of using a particular style. Sometimes design choices need to be made based on what can be made to look as good as possible in the least amount of time possible, since we are always strapped for time. I personally like clean consistent styles in games.

The simple geometric art style of Pitfall Planet was both practical and interesting.

What is the history of Pitfall Planet’s design?

Pitfall Planet started as a school project. We had a single semester to design and create a game. At the end of the semester our game would be judged in a province-wide competition (we ended up winning first place ^_^). The class had us partnering with students from a nearby art school, and at our first meeting we threw around a bunch of ideas. One idea that took off well, was a silly-physics game about two astronauts coming home from a bar in space. One astronaut would be drunk, while the other would be trying to get them home safely. We have some initial prototypes of this game floating around, but it wasn’t working out. Eventually we kept the co-op but refined the gameplay, and we ended up creating Pitfall Planet! After winning the competition, we kept working on it over the summer to turn it into a full game. I’d like to finish it this coming month, but, we’ll see! Toad Treasure Tracker, Load Runner, Monument Valley, and Portal 2 Co-op were all inspirations for Pitfall Planet.

This is the initial prototype for the drunken astronauts game. The two guys would be attached by a tether, and hilarity would (theoretically) ensure! 

What’s the most difficult part about game design to you?

Creativity has got to be the hardest part. Also, if you’re trying to sell a game, making it stand out from all the games being released is pretty tough. Oh, and also finishing a game- that’s really hard. It requires a fair amount of determination. I’d recommend trying competitions and game jams to get better at that.

How do you overcome it?

All those things are overcome in different ways, and there’s no clear answer. I guess just keep trying! Get feedback as soon as possible and know how to take feedback properly. Iterate all the time!

What do you really enjoy about making games?

I love watching people play my games. It’s kind of addicting to watch Let’s Plays of your game on YouTube. I also love that I get to merge my technical abilities with my creative abilities. Game development allows you to solve tough technical problems, create interesting visual experiences, and make things that people actually use and are passionate about. It’s the joy of creation mixed with satisfying problem solving.

Baby’s First House Fire was the first game I worked on to be Let’s Played by a number of people. It was really exciting!

What are your plans for the future?

For now, I plan to finish Pitfall Planet, then take a break working on some other small projects (small projects are more fun than big ones!). I have a bunch of old ideas I’ve never really brought to life, so I’d like to give them some attention. Running a team and handling the business aspects of game development is a lot of work. In the future I think I’d like to collaborate in a team where I can share more of that responsibility. I am also considering more traditional employment, since I put aside some decent job offers to pursue the indie route for a bit. Gotta pay those bills! For some general advice, if you’re interested in game development, I’d suggest that you should consider a computer programming / science / engineering degree rather than a game development degree, since there are other jobs to fall back on.

I’ve been working on other (secret!) side projects, which I’d to spend time on when I get the chance!


If you made it down here, thanks for reading! Sorry some of my later answers were brief, I was running out of time! Feel free to shoot me any more questions, I’d love to answer them :)

Tools involved in making 184

Since I got asked about what engine I used to make 184 (if you missed it, I’m not using any!) I will tell you what other tools are involved in its creation:

  • Programming environment: Notepad++. A seriously lightweight text editor with useful features that the standard Windows notepad program doesn’t have (syntax highlighting, multiple tabs, indentation, code folding, etc) It has support for every programming language I’m aware of!
  • Build tool: Grunt. While it may seem silly to have a build tool for javascript, it is actually very useful. I can separate my code into different files, and then just let Grunt do the tedious business for me (checking for syntax errors, combining the code, minifying it, putting it into the HTML file where I want)
  • Versioning software: GitHub for Windows. If you’re a programmer and you’re not using a versioning tool for your projects, the time to start is now! GitHub lets you keep track of all changes to your code between each version you “commit” to the project’s repository. You can also host as many public repositories on GitHub as you want. (However, I chose not to publicize my code for the time being. Sorry guys!)
  • Spriting program: Harry Mulder’s Gameboy Development. These two programs are very old, and were meant to help developers make homebrew Gameboy and Gameboy Color games back in the olden days! Tile Designer is a GREAT environment for making sprites! The Map Builder doesn’t quite have everything I need though (placing objects, for example) so I use a different program.
  • Map designing program: Tiled Map Editor. It’s a pretty good program for map making of many sorts, even isometric maps! It’s still not *quite* what I’m looking for, though. I plan to make my own map editor for 184, and I hope it will mature to the point that it is more useful than this good, but generic program.

I hope this was informative!

Skills 1

The first set of skill trees I’m going to blather on about is filed under ‘Zanjutsu’ which translates pretty transparently to SORDS…in Japanese.  Or something about swords.

It’s worth mentioning that the other three are called Hakuda, Hoho, and Kido.  In order, they are FISTS, FAST, and MAGIC. That pretty much sums them all up with no need to elaborate further.

I will elaborate further, but only on Zanjutsu, and only at this time on this post.

There are a few categories of risk v.s. reward that I’d like things to fall into.  There’s the safe option which isn’t really risky at all.  Let’s say 2 is average.  This category would ride at all times at about a 3.

Then there’s a slant for another category.  If 2 is average, we’ll say this one  can drop to 2 (which isn’t actually a drop, but is rather average, as stated above) or it could be as effective as a 4. 

Then there’s an even steeper category.  This one has 1 for a low number and 5 for a high number.  Wow.  5.  It’s almost like 3 is the actual average, right?  But no, it’s not.  The average is 2 because I said the average is 2.  A few times now, in fact.  More than two.

Anyway, those are the categories I am mentally filing these skill trees into.  Generally speaking, Utility-fuelled things will ride that 3 that isn’t quite the average, Power-fuelled things will range from 2 to 4, and Reaction-fuelled things will run the whole gamut from 1 to 5.

Zanjutsu is filed as a Power-fuelled skill tree to me.  It ranges from average to twice the average.  I’m not sure that will be relevant, but I’m going to type it here for the record so that I can make sure that I know so later.

I’ll now detail the seperate sects of Zanjutsu.  Remember, while Zanjutsu itself may be aligned with a Power aspect, each skill tree has 3 sub skill trees which are where the skills are actually located.  The skill tree, itself, is just an idea.  It’s the location for the building, but it isn’t the building.  I guess skills are girders.

Power-Power tree

Ok, the idea of Power is that you give something up, oftentimes temporarily, in order to be more powerful for a moment.  Here come the 15 techniques for the Power-Power tree.

1. Strong hit.

Wow, what an original name.  This does 1.5x damage and sets the user’s melee cooldown to 1.5x the norm.

The idea is that after acquiring any skill, the user can advance it in two different ways.  These ways vary depending on the skill tree or sub skill tree really.  For Power-Power, here are the key ideas:

Strengths: Powerful, Accurate

Weaknesses: Slow.

So then, how can we advance the above skill along one of those two strengths? Imagine that the next two techniques kind of branch of from the initial one…

2. (Passive) Strength or Sword or something.

Do 25% more damage.  What, that’s it?  Yep.  That’s it.

3. Accurate hit.

Again, with the original hay-maker.  This attack hits for ~2 tiles~ in front of the user rather than just one.  Why is it called accurate hit?  It just is.  It also doesn’t fire unless it actually has a valid target, so there is that.  It is pretty accurate.  It has an amazing x2 cooldown from the normal length though!  That’s like…one second of cooldown per tile…whoa…

In actuality, this doesn’t specifically hit for 2 tiles.  It just increases your attack range by 1 for the technique.

Now we get into the tricky part…I have to make this post appear as a tree while it is clearly a list!  Just kidding.  I’m not going to bother.  I’ll just declare what technique leads into the next two beforehand.

Speaking of which, don’t skill trees normally flow towards a point  I think they do.  That’s why I avoided it here.  I don’t want people to have the same kind of characters all over.  The further you go in a skill tree, the more diverse you can be!  That sounds like more fun to me.

Previous Technique: Strength or Sword or something.

4. Sweep.

Throw a huge slash that hits the three tiles in front of and diagonal to the user’s current tile. Deals x2 normal damage and has x3 cooldown.  3 tiles…3 seconds of cooldown…some kind of rhythm is developing.  I can just tell it!

5. Power Strike.

A blatant upgrade to the first 'original’ technique.  This does x2.5 damage at x2 cooldown.  Hey, wait a minute!  Those numbers aren’t balanced!  I know.  They aren’t supposed to be.  Remember, Power works on a sliding slope…!

Previous Technique: Accurate hit.

6. More precision.

Another 25% bonus to hurting people.  What?  That’s it?  Yes.  This is getting pretty diverse.  We’ve got strength bonuses on both sides of the skill tree…

7. Swordy Spinny

Hit all the adjacent tiles with a x1 damage technique.  This operates on a separate cooldown to normal melee attacks, but it does predictably last for 9 seconds.  Not 10!  Only 9.

Oh lands sakes alive, we’re getting a bit complex here.  I’ll just keep pretending this looks like a tree by labelling techniques with the preceding technique.

.Previous Technique: Sweep

8. Mastery.

'nother 25% damage.  Yep.

9. Nadegiri.

Most anime sword slash there is.  Checks for an enemy in a a 5 tile long, 3 tile wide area in front of the user.  If there is an enemy, it hits them for…x2.5 damage?  It has a 30 seconds cooldown and takes 30 adrenaline to use.

Previous Technique: Power Strike

10. Ryodan

Proper bifurcation technique.  This does a whopping x10 damage and has a 10 second cooldown.  Also, it fires even if there isn’t an enemy present.  Kind of hard to use, but hey.  x10 damage.  It does not take adrenaline.

11. Killer Edge (Passive)

This permanently upgrades your attack range by 1.

Previous Technique: Accurate hit.

12. Impale

This requires 15 adrenaline to use.  Sail forward 3 tiles.  If you run into someone in that time, stop in front of them and chunk them for x3 damage.  5 second cooldown.

13. Cutting Force

This increases your attack range by 1, but it drains adrenaline when you attack by 3 each time.  There is no cooldown or other penalty associated with it.

Previous Technique: Swordy Spinny

14. Wild Strength

Guess what?  25% more attack.

15. Gale something something.

If you have an enemy in a massive 5x5 area around you, then you begin to do a bunch of crazy slashes on them at reduced damage.  In total, it’ll add up to be a x2.5 damage multiplier.  This has a 60 second cooldown because it’s really easy to hit with.  No adrenaline drain, though. 

That’s it for the Power-Power sub skill tree!  This are all a lot of rough and raw ideas but I will probably stick with them and just refine the names.  Everything in this tree is meant to be offensive, and I feel like I’ve captured that well.

Til the next skill tree…

anonymous asked:

So, I know that all games/animations are rendered in polygons (triangles), but what do you do when you want to render a sphere? I've seen programs/games with 3D spheres, that seem perfect to the naked eye. Now, a perfect sphere would require infinite polygons, which would take infinite computing power to render. Are these spheres just regular old models that only look like they are perfect because the polygons are so small on the model, or is there some sort of programming trickery involved?

It’s trickery, and it’s actually a pretty interesting trick. What you’re seeing is the combined effects of shading and normal mapping

Shading is when the renderer uses positional data to calculate the color of a particular pixel on screen. There are a number of different techniques for this with differing results. Here is the first one, using a technique called “Flat Shading”. Flat shading is when the renderer adjusts the color of a polygon surface based on what it determines the color of the center of the polygon is.

You can pick out the individual polygons pretty easily here, right?

Now we’ll switch to a different shading technique. This one is called Phong shading. Instead of using the center of the polygon to determine what color the polygon is, the renderer will take the color value from the corners of each polygon and interpolate between them and the color value from the center of the polygon. This results in shading that is much more gradual and smooth, as you can see here:

If you look closely, you can see that the number of polygons here actually hasn’t changed. You should still be able to pick out the vertices along the outline of the “sphere” here. But it certainly looks a lot rounder, doesn’t it?

But this still has issues, because we might have something that’s very polygon-intensive, like a cobblestone street. This poses a problem - we want streets to be flat in terms of polygons, because it’s a street and you walk on it, but it should still visually look like cobblestones. You don’t want to spend extra GPU cycles rendering extra polygons for the street when you could spend them on hair or fingers or facial expressions or something, but you don’t want it to look flat either. So how do you fix this?

Have you ever seen the movie Indiana Jones and the Last Crusade? There was a scene in the movie where Indy has to take a step out into what looks like a bottomless gorge:

But he’s not really stepping onto a bottomless gorge, is he? If you look closely, you can see it. When you change the angle of the camera, you can easily see what’s actually going on:

The step of faith here is actually a cleverly painted (and flat) bridge to make it look like there’s a huge drop. From the viewer’s perspective, it looks 3D even if it actually isn’t. And since we have a computer fast enough to do all the calculations for us every frame, we can make it calculate what the 3D surface would look like from different angles and repaint it on the fly, even if the polygon we’re displaying is actually still flat.

This is called bump mapping (or often normal mapping, which is a specific kind of bump mapping). The way it works is that you apply a texture like this to the polygon, but instead of being directly displayed on the polygon, it’s used by the renderer to determine the way the pixel at that point should look in terms of height, even if the polygon is flat at that point. It simulates a bunch of different heights or depths, even though the polygon is still actually flat. The result is what you see to the top right - lighting as if it were bumpy or pock marked, but without actually needing additional polygons to get the visual effect.

The results of this can be pretty interesting. Take a look at these. This is a model with a lot of polygons in it to create a bunch of different shapes:

And here is a completely flat polygon with a normal map based off of the above shape applied to it:

You can see that the stuff that really sticks out far like the cone doesn’t look right, but the stuff that only pokes out a little bit like the donut and the hemisphere actually look pretty good for taking up no additional polygons at all. If you looked at both of them from directly above, without the side angle view, it’d actually be pretty tough to tell them apart without touching them. And that’s the point - it’s a way to fake heights and depths without adding extra polygons. This is why it works best on flat surfaces like walls and the ground that you view from (nearly) straight on:

These are both flat polygon roads, but the right side looks a lot more like it’s made of real stones than the left. There are other effects also at play, like specular maps (which are used to calculate how shiny/reflective or dull an object is) and more, but they also operate on the same sort of mathematical principles.

It takes a good artist to create the proper map textures for 3D models, and it takes a graphics programmer with a solid understanding of math to create the renderer that can do all of the proper calculations to take those maps and figure out exactly what color each pixel actually is. I will say that it can be pretty fascinating stuff.

4

I did Ludum Dare 34 this weekend! It’s the first time I’ve ever done this famous worldwide online jam. It’s not as much fun as the local jam sites, but it was a good excuse to make something new.

It was fun to make something fast-paced and chaotic, since I’ve been doing puzzle games lately! In Just Me and Only Me Against The World, you fight aliens with fast run-and-gun action while cloning yourself to stay alive!

I haven’t been working as hard on Pitfall Planet this past week, since I did LDJAM and have also been working on a side project. We are planning to get a lot done during the holidays, though. I’ve got to make the final boss :)