Tag Info

Hot answers tagged

26

I'm actually one of the Don't Starve devs (Kevin on our forums). I don't usually handle the rendering stuff, but I can tell you that the game is in 3D. The ground is just a regular 2D tile map with special transition pieces to make corners look better. There's no special Deathspank-style rounding going on, although we have talked about doing that in the ...


16

Assets like these can be created in any 3D package. They are imported into a game by pre-rendering the models at specified angles, using orthographic projection in the viewport. The pixel effect probably is a side-effect of rendering at a low resolution with little or no anti-aliasing. The spritesheets generated by these will be ordered in such a way that ...


13

You will have to separate your code into separate projects (in the same solution). Usually you would have the following setup: -Engine Core (DLL) -Game + Game Logic (EXE) -Content Pipeline (DLL) -Editor (EXE) For even larger projects you might want to separate the Engine Core over multiple projects like Core, Physics, Graphics, Audio, ...


9

A platformer like this is still, in its essence a 2D platformer. The 2.5D effect, even the curling around the mountain, is merely a visualisation of a world constrained in 2D. Your physics engine will probably only operate on this world and not on the visualisation of it, so a 2D physics engine will be sufficient. That said, you might be interested in some ...


9

To achieve such an effect, you can use a 3D Projection without perspective (called parallel projection). That will render all your objects at the same size and from the same angle, no matter where they are positioned. Something like this is mandatory if you're using a painted background. Here's a nice overview of some possible projections. In addition to ...


8

Well, in my case, before I got accepted into Digital Media I had to present a folder of various 2D and 3D projects. Therefore, it's imperative that you try and get some of that formal training yourself, which isn't hard. It really depends what you're looking for. Vector and raster art are both big fields to work in, so I recommend programs like ...


7

Well, start programming! You can google for some basic tutorials to get you started, but if you don't know with what game to start, this answer is a great starting point: What are good games to "earn your wings" with? As for books, I would suggest you start from something like XNA 4.0 Game Development by Example: Beginner's Guide and then move to Building ...


5

SoulBeaver was correct to point out that you need to know art. A lot of the tutorials online will give you a mechanical guide on how to achieve a certain effect or how to draw with a tablet etc but if you don't know how to draw then you won't be able to produce much. By all means learn the software, if you want to do spriting then you need to know how to ...


5

2D isometric is just a 3D orthographic projection, with a little camera work you could use almost any 3D engine really. The screenshots that I find of Bastion look like they are 3D rendered, but built simply and angular like it was built on a 2D grid. Note that similar games like Diablo3 or Wakfu that look like they are 2D are really built and rendered in ...


5

Swapping textures will kill your performance. Modern hardware has only gotten more susceptible to this problem, not less, as the speed and power of the shader units and video RAM are growing much faster than the speed increases of the bus between system RAM and the GPU. The only sane approach is to cut down your texture sizes, or generate procedural ...


5

This is a long answer, but actually the basic premise of divide-by-camera-z is very simple: The further something is away from you, the smaller it appears. Also, the smaller distances between two things appear. Positions (Not required reading if you're using Unity!) Firstly, you need to render positions / points that using correct perspective. Positions ...


4

Separate out rendering logic as best as you could from actual game logic when designing your game engine. One way of doing this is to use Component pattern when building your game engine. For example, XNA uses this pattern at the framework level for flexibility. Use the same code-base for rendering with your level editor; write wrappers if you have to. ...


3

Keep list of compatible components in each system. This way you don't have to iterate over every entity. Your entity manager can take each new entity, and dispatch its components to the correct systems. IMO tiles shouldn't be entities. It's just too memory expensive. Also, as you noticed, tilemap needs special treatment in rendering (also physics), where ...


3

Let xDiff be the difference between the x coordinates, and yDiff be the difference between the y coordinates. The tile distance is ( yDiff/2 + xDiff ) rounded up to the nearest integer.


3

I can't say for sure how that one game did it, but from the video it looks like it's just a regular 3D game world that uses billboarded sprites for game objects. Similar games include some of the Paper Mario games and the Death Spank series. Render your terrain as 3D with a perspective camera. Maybe apply some simple vertex shader to get a little extra ...


3

http://www.permadi.com/tutorial/raycast/index.html Best tutorial on raycasting i could find when i was researching the topic a couple years back. It's pure theory, no programming. Other than that i suggest you read about the Doom engine and the Build engine. Reading the source code is IMHO far too time consuming (it's pure C and ASM, plus plenty of ...


3

Here's a very detailed tutorial: Creating pseudo 3D games with HTML 5 canvas and raycasting. The key search term is "pseudo 3d game." Also I posted the text of the tutorials scgrn mentioned. (I think I read these a long time ago. I remember the ASCII diagrams!) PXDTUT7.TXT PXDTUT8.TXT


3

I would firmly vote for Unity3D. The environment is great, it is fast, it can deploy to all of those platforms (plus iOS I believe). You can also reuse your JavaScript skills to script it (as well as C#, if you want). In terms of 2.5D, you'll just want to fix the camera along an axis.


3

In order for the correct parts of the sprite to be obscured by walls and other sprites, you need to create a plane in the rendering space upon which you can blit the sprite. The plane itself should be the size of the interactable you want to draw, and its normal should be facing the camera, essentially a moving wall perpendicular to the view angle. Once ...


3

New answer: You can still make the skeletons 3D, in game. Animate them once in 3D or generate their animations procedurally. Now, when you're rendering in game, use that 3D skeletal information to apply z levels to the 2D sprites that make up the body parts of your characters. Now, when the 3D bone moves, use the 2D screen translation (of the current ...


3

No. You can choose whichever coordinate system you want. The only thing to maybe consider is what coordinate systems your tools and models are in; converting is no biggie but there's only headaches to be found in being too different. There's a lot of opinion about coordinate. I've been witness to some rather heated debates about whether it makes "more ...


2

There are lots of great tutorials around on the web for achieving different graphical styles. You'll want to pick up a copy of PhotoShop and start learning it if you already haven't. A few links to get you started: http://tutorialblog.org/pixel-art-tutorials/


2

It depends if any of your physics can happen outside the flat player space. As ghostonline said debris and ragdoll animations are a classic example of out-of-2D physics in an 2.5D game. Another example is bullets: If there are any projectiles in your game, do they follow the curvature of your 2D space or do the travel straight ahead even if that means they ...


2

It could be any 2D engine, but you need to design your tiles somewhat diferent. Also remember that you need to draw your tilemap from top-left to bottom-right to paint the nearest tiles in the last time, so nearest tiles are always painted over the other tiles. You can refine your algorithm by making semitransparent or not drawing tiles when these tiles ...


2

A Wolfenstein-style raycaster is really simple. You basically shoot beams horizontally in an arc from one side of the player view to the other edge. When a beam encounters a wall, you get the wall slices height on screen from the distance (e.g. scale_factor / distance). E.g. for this height calculation you don't need to understand anything about matrices ...


2

You need to prototype this, with placeholder data. Create a simple program that outputs a sprite sheet where each frame consists of text describing what it should be (e.g. "Sprite 7 frame 5"). Use that to create the final number of sprite sheets you're going to end up with, and see how well that runs a test scene with everything loaded into memory. If it ...


2

There are a couple of (very) old tutorials on Wolfenstein-style raycasting written by Peroxide. Search for "pxdtut7.zip" and "pxdtut8.zip". The code is written in Pascal but the concepts are explained very well.


2

Does section 27-1 of the following article help? http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html I used this a while back and it worked perfectly, the type of projection (orthographic Vs perspective) should not be important as long as you can calculate the inverse view projection matrix.


2

As for your first question, do you mean Weebles? Matryoshka dolls? Have you heard it called something before? I can't seem to pinpoint a certain term, but perhaps you can be the first to call it something! The shading is basically a gradient of darker values toward the bottom of each major part of the character (body and head) and lighter toward the top. ...


2

This is actually a quite simple thing to do. Use your "heightmap" as a texture input to the shader of your sprite. Then simply add the heightmap height to the fragment depth inside the shader. Here's a little example fragment shader: uniform sampler2D heightmap; void main(void) { gl_FragDepth = gl_FragCoord.z + texture2D(heightmap, ...



Only top voted, non community-wiki answers of a minimum length are eligible