Tag Info

Hot answers tagged

9

Cel shading / Toon shading There might be something more to it, but in general, all of your examples use Cel shading to some extent. As for your question, whether there are any engines that support this. Well, that should be possible in every engine out there. The ones that aren't hobby projects should actually have such shader available in their standard ...


6

3D computer graphics works based on the mathematics of 3D space. Objects like that cube cannot exist in 3D space - that's why they're "impossible objects" - so they cannot be directly modeled in computer graphics either. Of course it is possible to build objects that, when seen from a certain camera angle, produce an optical illusion that makes them look ...


5

Eric Lippert wrote an excellent series on generating line-of-sight in C# with Shadow Casting on a rectangular planar grid.. Amongst other issues, Eric dealt with various questions that must be answered about the line-of-sight requirements, which give different results, and gives examples of a couple of different results. One of the articles deals in depth ...


5

Floating point values lose precision when they get larger. Keep your values as close to zero as you can. For large worlds, split them into chunks (addressed by integer chunk coordinates) and then make world coordinates relative to the "current" chunk (where the player or camera is), shifting objects whenever you move to another chunk. With this approach ...


4

I was experimenting a bit after playing Deathspank, which has a similar effect. Though I never delved into it enough to see if it could be tuned to work super well, one possibility is to just modify items in your vertex shader based on depth. A function mapping cos(depth) to a Y axis modification works. You can adjust it such that the world not only drops ...


4

Your game will need to render two viewpoints, one for the left image and one for the right image. From there, a quick search revealed the following shader created by objo on Codeplex: sampler2D input1 : register(S0); // right image input sampler2D input2 : register(S1); // left image input float4 main(float2 uv : TEXCOORD) : COLOR { float4 Color1; ...


3

Angular acceleration works just like linear acceleration on a single axis, except instead of working with a distance, you're working with angles. So, for example, lets look at your linear motion converted into a single axis: float desired = target - location; //perform something similar to normalize, where you limit the size of `desired` acceleration = ...


3

What values should be used for the near and far planes depends entirely on your scene. It doesn't matter what units you're using, as long as the near and far planes are specified in the same units as everything else. Set the field of view to whatever you think looks good. Set the near plane as far as you can get away with - as far as you can make it ...


2

The problem is actually much simpler than you make it sound. Suppose wx, wy are your "world" coordinates -- that is, the native coordinates of your tiles. In order to transform that into the screen coordinates sx, sy, you apply some matrix transform. This can be written as: (sx, sy) = (dx, dy) + M * (wx, wy). You already have that equation somewhere in your ...


2

You're looking at points on a continuum as if they're alternatives - Consider resolving a NURB to screen resolution, i.e. each pixel ties to an evaluation of the NURB for that point - the end result is that you're moving from a set of continuous functions to a discrete representation produced by evaluating those functions at specific points. In the most ...


2

Take a look at raytracing-based graphic engines. Raytracing theoretically allows any geometrical shape as long as it is possible to calculate where it intersects a line. That's why demos of raytracing engines like spheres so much - perfect spheres are the bane of polygon-based rendering because they can only be approximated. But they are trivial to do ...


2

When adding (combining) the movement or rotation (or scale) of two matrices together the arithmetic to apply on them is multiplication rather than addition. change your += to *= and your original code will work as expected. if (kbs.IsKeyDown(Keys.W)) { playerWorld *= Matrix.CreateTranslation(playerWorld.Forward * elapsed); } one matrix ...


2

Use a vector to store translation and build the matrix from it. if (kbs.IsKeyDown(Keys.W)) { playerPos += playerForward * speed * elapsed; } playerWorld = Matrix.CreateScale(playerScale) * Matrix.CreateFromQuaternion(playerRotation) * Matrix.CreateTranslation(playerPos);


1

What if for LOS calculation you have a separate "higher resolution" grid that fills in the corner gaps. I was thinking something like this: The left is the original block section of 4 squares. The right is the "high resolution" version, as you can see each original square was subdivided into quaters and one of the corners has been filled in. I'm not ...


1

For C++ game dev, I learnt C++ on learncpp.com and cplusplus.com, and worked with SDL. This is a great platform-independent combination. Of course, use SDL with OpenGL for GPU graphics rendering. SDL is like the glue code between C++, your computer and the GPU. So, you can write a lot by yourself. SDL comes with great libraries available on their website. ...


1

Is it possible to learn as I go along or do I need to have some natural math talent to be able to create 3d games? Yes it's possible, no you don't need any natural talent. Knowledge comes mostly from practice, in 3D just as in 2D. How good at Math do I need to be to create 3 dimensional games? Just because you're adding a third dimension to your ...


1

So your terrain is made of triangles (Mesh faces). Each mesh face has 3 vertices (A, B, C). I don't exactly know what AB, BC and CA are, but they're always 1, so they're probably some normals or scale factors or whatever. Your solution is to find out in which triangle your object currently is and by interpolation of those 3 vertices find out correct height ...


1

Profiling (and adjusting code where necessary). There's different profiling software available (your compiler might provide built-in hooks for this or bring the tools like GCC and MSVC do) that won't require you to actually edit or modify your code just to take measurements. The easiest - and most generic way to do it (which will require modifications of ...


1

The Ecstatica series used a combination of dynamic 3D characters superimposed over pre-rendered backgrounds. The dynamic elements (and most of the backgrounds) are comprised of ellipsoids. While the effect looks funny today it's was running on mid 90s PC hardware without any 3D acceleration. At the time I thought the characters (video) were very well ...


1

Direct answer to your question: I'm not sure what they used for this specific game, but I'm 99% sure it was 3ds max or Maya for the 3D models, Photoshop for the textures, and their game engine's level editor for laying out the scenes. Beyond that direct answer: Ultimately software doesn't matter that much for the quality of the graphics. I mean, the reason ...


1

Triangles are planar, meaning they do not have thickness. What you seem to be describing is a graphics technique called back-face culling, which basically allows the winding pattern for a triangle to define its normal, and that normal pointing into or out of the view frustum is able to determine whether it is drawn or not. XNA allows you to customize this. ...


1

It might be a good foundation and it discusses concepts that are not often discussed in context of Java. If you follow the author's work you'll be impressed with what he has gone on to do with Java and Computer Vision (CV). You can get some older and unpublished chapters to Killer games here. Also the code from the book is there too. He has also gone on ...


1

Largely, 3D is going to introduce more difficulties than simplifications. But I just feel like adding a few things that might actually be easier in a 3D game: Player customizations. Imagine if Team Fortress 2 were a 2D platformer with 20 animations for each class. Now, imagine your marketing director has suggested you add hats to the game. This would mean ...


1

In my first attempt, I created a new projection matrix for the smaller window, and then tried to rotate the frustum using LookAt, this almost worked but had some distortion when tilting up or down. However, using a different approach it turns out the problem was quite easy to solve in DirectX. The BoundingFrustum class that I used (while It can be ...


1

I'm not familiar with DirectX, but the BoundingFrustum docs you link to say that it can be constructed from a projection matrix. All you need to do, then, is multiply your actual projection matrix by a matrix which (if you used it to draw with) would scale/translate the graphics so that the rectangle you want fills the viewport, then use that matrix product ...


1

If you already have code that generates rooms connected with hallways in 2D simply update your code to do this: Each generated room gets a random height (pretty obvious right?). I would try with picking from a list of predefined height values or simply pick a random value from a good interval. Then proceed as usual - connect the rooms with hallways, but ...



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