Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 20 Jul 2013
Offline Last Active Today, 09:58 AM

#5131515 Old school 3D engines

Posted by ericrrichards22 on 15 February 2014 - 05:23 AM

Fabian Sanglard (http://fabiensanglard.net/) has done a series of articles digging through various older now-open-source games and engines, including Wolfenstein, Duke Nukem, Second Reality, Another World, and Quake.

#5129447 how to prevent save cheating? (for games where saving is NOT allowed)

Posted by ericrrichards22 on 06 February 2014 - 06:29 PM



Let them cheat their way through and then they don't feel like playing it again after the first roundORprevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .. . . i choose the latter.@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?

OR they fail and fail and fail and since they can't do anything but start over or give up, they give up and call your game crap out of frustration.
Actually, 'fail and fail and fail' won't really be possible in my games, neither will checkpoints nor cancelling autosave be possible. You fail, you face the consequence, move on and . . . There'll be different things in my games and if isn't implemented before i start making my games, it'll be new things.
One more thing, shouldn't the player play within the developers programming? If not, i would have loved to keep going straight in the gtavc but unfortunately, you get magically turned around in the water.
Should you let them implement what you didn't program into a game? What if what they implement your idea for a sequel?
I'm just asking.



Often times, this kind of thing, in the form of modding, props up games and gives them life far beyond the finite amount of content that you can provide.  There are still people buying Half-Life 2 (2004) and Rome Total War (2004) & Medieval Total War (2006), at least in part because of the community-created mods that exist for these games.  Hell, half of the Valve IP is derived from popular Half-Life mods: Counter-Strike, Day of Defeat, Team Fortress.


Sure, an active modding community places more strain on you to produce a better product the next time around.  But you could also look at it as free A/B testing, and at worst, even if a mod becomes much better than the content that you created(not an uncommon situation... I don't think any of the games I play regularly are unmodded), users still need to purchase the base game to run the mod.

#5129086 assimp subsets problem

Posted by ericrrichards22 on 05 February 2014 - 11:46 AM

Very cool, glad you got it working

#5128541 assimp subsets problem

Posted by ericrrichards22 on 03 February 2014 - 03:21 PM

I'm assuming from the snippets you've posted that you're working from Frank Luna's book.  I worked my way through that last year, so you might want to take a look at my code to integrate Assimp.  I was using C# and SlimDX, rather than C++, but the differences aren't that big.


#5128256 how to prevent save cheating? (for games where saving is NOT allowed)

Posted by ericrrichards22 on 02 February 2014 - 04:17 PM

I will not bother playing a game that is that much of a pain in the butt.  My time is valuable; particularly in games where outcomes are governed by random die-rolls, the cost of losing hours of progress due to an unlucky roll is enough to irritate me to the point where I will close the game and do something else for the rest of my all-too-rare free time...

#5124034 SDL and DirectX11 for 3D Games?

Posted by ericrrichards22 on 15 January 2014 - 08:39 PM

I haven't used the newest release of SDL, but the older stable version (1.2?) had the limitation that it only supported a single window.  For most games, this is not a real issue.


SDL works pretty well as a simple wrapper for the Win32 window creation and input (mouse & keyboard) APIs.  I haven't checked in on the state of the world of DirectX & SDL tutorials lately, so I don't know exactly what is involved in standing up DX 11 with SDL, but with DX9 it was quite straightforward.

#5122957 Good Direct3D 11 book for someone who already knows OpenGL

Posted by ericrrichards22 on 11 January 2014 - 06:33 PM

Frank Luna's DX 11 book is always good.

I've also found some material from this book to be useful.  I don't own it, but some very useful information came up on the Google Books preview, so I am thinking about getting it.

#5121793 Best Laptop for Game Development

Posted by ericrrichards22 on 06 January 2014 - 08:01 PM

I have a very inexpensive Lenovo laptop.  I believe it was <$400 on newegg.  It is now two years old, so I would imagine that they have made some strides in cheaper, more modern hardware since then.  I can run DX 10 graphics at around 60 fps on debug, with several hundred thousand triangles being drawn.  I haven't looked at opengl performance, but I imagine that for most things that a hobbyist would be doing, the hardware is not going to be a problem.


My bottleneck when I use my laptop is actually the lack of screen real estate.  It has some kind of oddball wide-screen display resolution, maybe 1366 x 768 on a 15" screen, which is a little tough to use when I am used to dual 1920x1080 displays on 26" monitors on my desktops.


Spend an extra couple hundred bucks and replace whatever hard drive it comes with with an SSD.  More often that not, you'll see a lot more benefit from the faster disk read-write than from investing in a faster cpu or memory these days.

#5121700 Provinces structure (irregular, RISK like 2D map)

Posted by ericrrichards22 on 06 January 2014 - 01:58 PM

This may be way beyond what you are looking to do at the moment, but you might want to look at this article on generating nice-looking irregular maps.  It uses Voronai diagrams, which are pretty complicated (I've been thinking about it and trying to correctly implement Fortune's Algorithm for quite a while now...) but very cool.

#5120706 Missing the vertex!

Posted by ericrrichards22 on 02 January 2014 - 10:07 AM

You need to use a single vertex buffer large enough to contain both sets of geometry.  Then, you write one set of geometry to the start of the buffer, followed by the other set of geometry.  If you are using index buffers, you'll need to do something similar with the index buffer.


When you draw the geometry, you need to use offsets to indicate the first vertex in the buffer to draw, and the number of vertices to draw.

#5119409 Books on clipping/culling?

Posted by ericrrichards22 on 26 December 2013 - 07:35 PM

Most 3D graphics books have a chapter or two on frustum culling.  I don't know of any that go into a great deal of depth on it, but there are a lot that will show you how to implement culling and some brief overview on the subject.

Chapter 15 of Frank Luna's Introduction to 3D Game Programming with Direct3D 11.0 shows how to do it using DirectX 11, although the concepts used should be applicable for most 3D rendering libraries.


Michael Abrash's Graphics Programming Black Book has a bunch of information on BSP trees and the hidden surface removal in Quake, which had a pretty impressive software renderer (plus, it's free, and posted on this site).


Not a book, but Fabien Sanglard has done a writeup on the Duke Nukem 3D engine, (as well as the various Quake and Doom engines), that discusses the Portal system used for culling and hidden surface removal in that game.  I would recommend reading through all of his content, just to get a sense of the hoops that some of these early FPS's had to jump through in order to render efficiently; it's pretty impressive what they were able to do without dedicated graphics hardware and modern rendering APIs.

#5119404 (Cheapest) "Path" Finding

Posted by ericrrichards22 on 26 December 2013 - 07:26 PM

I think you want to look into dynamic programming.

Cormen's Introduction to Algorithms  is pretty solid on this, and a ton of other algorithmic stuff as well.  There are a couple, three chapters on different graph search algorithms, as well, if that ends up being more useful.

(I'm not totally sure about the legality of the pdf that I linked, but it is the 3rd google search result for the book...)

#5119130 How to make tile texture

Posted by ericrrichards22 on 24 December 2013 - 08:45 PM

You can supply a texture coordinate transformation matrix to your shader, and use that to transform your vertex texture coordinates.

So, if you wanted to tile the texture 4x4 across a quad, and the vertex texture coordinates are setup to go [0,1], you'd use this matrix:

[[4, 0, 0, 0]
 [0, 4, 0, 0]
 [0, 0, 1, 0]
 [0, 0, 0, 1]]

You can also use this technique to apply other transformations, like rotating the texture or offsetting the starting point.

#5114743 Creation of 2d static borders

Posted by ericrrichards22 on 05 December 2013 - 07:54 PM

There are a couple ways you could draw the borders:

  • Use either two vertex buffers or a single buffer and two draw calls with appropriate starting indexes to draw the border vertices as a LineStrip.
  • Use a single vertex buffer containing all the vertices, create an index buffer to draw the vertices in pairs and render as a LineList.

For the intersections, you'll want to look into line-box intersection tests.  Off the top of my head, I would say you could treat the inner edges of the border as a set of planes, intersect the box with each plane, and then check that the intersection point lies on the segment of the plane that is part of the barrier.


To make the cube wrap top-to-bottom as you are describing, you will probably need to draw it twice, once with the center offset just off the top of the screen and once with the center just below the bottom of the screen.  Unrelated to the rendering, you will probably want to simply wrap the cube center to the bounds of the sceen, so that if it goes off the bottom, it is logically positioned at the top of the world, even though you may need to draw it in both places for a few frames.


I don't know about your last question, but you could probably write some simple code that could read in something like an ASCII art representation of your level and generate the necessary vertices.

#5114739 DX11 - Ray Tri Collision - Mouse Picking

Posted by ericrrichards22 on 05 December 2013 - 07:41 PM

Looking at my picking code, I see two differences:

  1. I think that you might want to renormalize the direction vector after you transform it by the inverse view matrix.
  2. I think the correct way to generate the intersection point would be something like:
    intersect = v0 * (1.0f - fBary1 - fBary2) + v1 * fBary1 + v2 * fBary2;

    if I am reading this correctly http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/.  

(I'm using SlimDX, which has an overload that returns the intersection point directly, however, I've checked this using the similar Ray.Intersects() method to your D3DXIntersectTri() method and it seems to be correct).