Eric

Members
  • Content count

    438
  • Joined

  • Last visited

Community Reputation

138 Neutral

About Eric

  • Rank
    Member
  1. This post from Jamie Fristom's GameDevBlog lists several popular games and their various game mechanics. For example, Half-life 2's mechanics included shooting, driving, physics puzzles, automated turret placement, etc. Basically, ask yourself, "Would I want to replay that level/mission/section, or was I just relieved to finally get past it?". Below are the games, along with my preferences. Feel free to mention other well-known games in your responses. Zelda (Windwaker or Ocarina of Time) LIKE: nonlinear exploration, horseback riding DISLIKE: fighting, puzzle-solving, stealth, boss fights Metroid Prime LIKE: nonlinear exploration DISLIKE: shooting, jumping, boss fights, ball-mode stuff Half-Life 2 LIKE: driving, ant-lion/squad herding, automated turret placement DISLIKE: shooting, "Don't walk on the sand" stealth, physics-puzzle solving Tony Hawk Pro Skater LIKE: tricks, collecting DISLIKE: none GTA Vice City LIKE: driving, rail-shooting, remove-control vehicles DISLIKE: shooting Prince of Persia Sands of Time LIKE: none DISLIKE: fighting, navigating terrain Finally, here are a few that weren't in Jamie's list: LIKE: sniping oblivious AI enemies, grabbing-running-capturing the flag in BF1942 multiplayer CTF
  2. Forced Screen Resolution - A piss off?

    I wish games would let you do "full-screen windowed" mode. This is where the game app creates a window which spans the entire screen, with all Windows GUI elements (e.g., menu bar) turned off. This is done by specifying WS_MAXIMIZE|WS_POPUP as the style argument for CreateWindow(). This gives you full-screen immersion without the slow, ugly video-mode change every time you launch the app or alt-tab out. This seems like the ideal default behavior for games (except those that must run at a fixed resolution). What do you guys think?
  3. New Puzzle game idea, needs work.

    I tried your demo. I like the spherical grid (It would be cool to have a *real* spherical surface, but I suppose you'd have to tesselate with triangles or hexagons for that). I like the crazy background graphics that reflected what was going on in the game. There was an article on Gamasutra where the author talked about puzzle games he disliked. I couldn't find the link, but he basically said that he disliked a puzzle game where he couldn't explore to find the solution. He didn't like having to plan ahead. He didn't like having to figure out the entire puzzle in his head before making the first move. I agreed with the author, and I think your game falls into this "plan-ahead" category (contrast with Tetris, Bejeweled, or Minesweeper).
  4. Post favorite car pics (56k beware)

    Mercedes SLR Gullwing (1955?) Ferrari 360 Modena Audi TT
  5. Post favorite car pics (56k beware)

    Jaguar XKR: Mazda RX7: 1961 Ferrari 250 GT California. If you have the means, I highly recommend picking one up:
  6. How do I get a NDA

    http://www.elance.com/c/static/main/displayhtml.pl?file=signing_the_deal.html
  7. Quote:Original post by baddogj 5. There was twins in a bar. They were drinking the exact same drink with ice. One drinks slowly while the other drinks very fast. The twin who drunk slowly died. How did this happen? They were conjoint twins. Shared bloodstream, high blood-alcohol level, dehydration, blah blah blah you get the idea...
  8. Yet Another Terrain Engine (elevation data from USGS). I challenge everyone to find a color scheme more offensive to the eye than this:
  9. For my terrain, I'm using coarse elevation data (10m spacing). To add extra detail, I interpolate between elevation data points and add procedural noise. Below are screenshots of the Grand Canyon with linear interpolation (top) and Hermite interpolation (bottom). (For Hermite interpolation, a.k.a. Hermite splines, you specify positions and slopes at two endpoints and you get a cubic curve.) There is no procedural noise in these shots. As you can see, the Hermite interpolation produces weird artifacts at sharp cliffs, and this is something I'm working on. If anyone has any thoughts or advice on this, feel free to post. I am only using higher-order surfaces to generate a higher-resolution heightmap from the source elevation data (The surface evaluation is performed on the CPU). As for texturing, lighting, and dynamic LOD, I am basically using Hugues Hoppe's geometry clipmaps technique (look for the paper on his website if you're interested).
  10. Ok, the thing I was overlooking is D3DXMACRO [smile]. I am using D3DXCreateEffectFromFile at game-init-time, and D3DXMACROs allow me to adjust arguments like MaxAnisotropy at this point (without having to actually open the .fx file and modify its contents). Hmmm, I wonder why I'm posting this reply instead of just deleting the thread...
  11. Here is how you specify the MaxAnisotropy sampler state in HLSL: sampler sampMaterialDetail0 = sampler_state { Texture = <g_texMaterialDetail0>; MipFilter = LINEAR; MinFilter = ANISOTROPIC; MagFilter = ANISOTROPIC; MaxAnisotropy = 16; AddressU = Wrap; AddressV = Wrap; }; Notice the problem here? MaxAnisotropy must be "hard-coded", so that D3DX can validate the HLSL technique at compile-time. Since different cards support different values for MaxAnisotropy, this is basically unworkable. The only "solutions" I can think of: 1. In my HLSL source, duplicate every technique n times, using n different values for MaxAnisotropy. This would be incredibly tedious, even for n=2. 2. "Manually" set the MaxAnisotropy value (via a SetSamplerState call) immediately after calling Effect::Pass(). This is a total hack -- the D3DXEffect interface won't tell me which HLSL sampler is assigned to which integer sampler stage, so I'd have to guess. 3. Use HLSL without using D3DXEffect. In other words, implement a D3DXEffect-like layer and fix the problem mentioned in 2. I would probably resort to the above hacks before resorting to this. I've only just started using HLSL and D3DXEffect, and I expect I'll eventually run into other render states besides MaxAnisotropy that pose the same problem. I'm hoping that I'm overlooking something here. Can anyone think of a real solution to this problem?
  12. Ok, I see... and you must be updating your edge data as you're performing the subtraction. Alrighty, I have another suggestion. The gist of my approach is this: instead of propagating from the ground and through the entire (grounded) mesh, you propagate out from all the CSG-op-affected and CSG-op-created faces (and you'll typically not propagate out very far). For each face, you maintain a path from the face to the ground. Specifically, each face has a pointer to its "parent" face, which is just the next face on the path. For actual ground-touching faces, the pointer field holds some special key value. (To initialize these paths, you set all pointers to null or the key value, then you run the "re-parent orphans" step described below.) During your CSG operation, when the operation affects a face, you make the face an orphan (set the parent pointer to null). You also add it to a list of orphans. Any newly-created faces are also created as orphans and added to the orphan list. Next, you propagate the orphans: For each orphan in the list, check if it is a parent of any of its neighbors. If so, make them orphans and add them to the orphan list. Repeatedly process the entire orphan list, stopping when the most recent pass failed to add any new orphans. Finally, you re-parent the orphans: For each orphan face in the list, check if any one of its neighbors is not an orphan. If so, have the non-orphan neighbor "adopt" the face, and remove the face from the orphan list. Repeatedly process the orphan list, stopping when (A) it is empty, or (B) the most recent pass failed to remove any orphans. At this point, the orphan list is your "floater" list. Hmmm, looking back on this lengthy treatise I've just written, I'd say my approach lacks some of the elegance and simplicity of your original 4-line solution [smile]. On the other hand, if your mesh has a million faces and you only want to process a few hundred or thousand faces near your CSG op, then maybe this is something to consider. [Edited by - Eric on September 18, 2004 2:35:05 AM]
  13. I think I'm missing something. Why can't the mesh be partitioned in a preprocess? Is the face connectivity changing per frame? Just to be clear, here is what I have in mind: 1) Partition all faces (into n partitions). Label each face with a partition ID (ranging from 1..n). 3) At run-time, to propogate a value from one face to all connected faces, just loop through the entire list of faces and look for faces with a matching partition ID. Or, to eliminate the search through the entire list of faces: 1) Partition all faces (into n partitions). 2) Add a "next_in_partition" pointer in your face data structure. Circularly link all faces within each partition. 3) At run-time, to propogate a value from one face to all connected faces, just traverse the circular linked list, stopping when you get back to the initial face.
  14. Planet-Sized Batched Dynamic Adaptive Meshes: http://www.crs4.it/vic/cgi-bin/bib-page.cgi?id='Cignoni:2003:PBD' This paper is mostly about a terrain LOD system, but the authors also talk about fitting their heightmap data to the surface of the (spherical) planet.
  15. Vegetation Rendering

    I was looking at Far Cry's vegetation today. They use a small collection of hand-modeled trees and bushes. For a given model, they also have a set of billboards of the model rendered from several viewing directions. (They actually have a high- and a low-rez set of billboards for each model.) For a distant tree, they select the billboard that most closely matches the actual viewing direction. (If you strafe around the tree and change your viewing angle enough, you'll see the tree pop as it switches to a different billboard.) When you get close enough to a billboard tree, it switches to the 3D model, but you don't see a pop! I would have expected a pop, since the billboard version of the tree is only in approximately the correct orientation. To avoid this, they orient the 3D model so that it matches the billboard. Then, as you approach the tree, the 3D model gradually rotates to the tree's "true" orientation. Well, anyway, that was my impression of how their system worked. If you want to check it out for yourself, download the demo and focus on the "bent" palms along the beaches. Hey, Winter Park is a few miles south of me. I suppose you're at Full Sail, yes? Just curious...