• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

307 Neutral

About Slather

  • Rank
  1. I've been trying to decide whether a light or dark negative space is more functional, and which looks better. I'm a fan of the silohuette style, but I think I'll go with a nightclub theme- mostly dark with bright colors in the foreground. Thank you for testing, Staffan! I wish I had a vista or win7 computer to test on... I've added a line to the installer script that request's an admin's status to install the game. Its a weak attempt for compatibility, for now. I'm going to look for a better install system (than NSIS) that requires less esoteric one-time-use scripting knowledge. There is no goal at the moment. The test level is where I'm puting all of the different creatures I'm making. I run performance tests, tweak Box2D, test AI behavior, tune gameplay controls, and fix bugs in the test level. Very soon I'll implement creature death, and have a enemy chase the player around. Expect future posts about waypoints and AI behaviors. I'd have a demo, but I just started using a recent version of Box2d. I was using the code directly in my project from version 1.4.3 or something. Now I'll be linking to up-to-date static libs from the repository. I needed a joint that my creatures can use to bite and carry objects, and the old version didn't cut it. The new one has a b2WeldJoint, which should work nicely. I added some music to the demo. My previous OpenAL/Ogg code was buggy, which didn't make sense because I started with demo code that worked fine! So I started over with the demo code and discovered that I was trying to open the Ogg stream using ov_open_callbacks() instead of ov_open(), which I found in the docs on the OpenAL site when I was trying to fix an (apparently) unrelated bug. I've fixed it now and added a track I whipped up in Reason. I put it together in a couple hours using stock samples in Dr.Rex, and liberal use of faders and automation. Anyone that's used Reason knows that its a hack job, but I'm ok with that. I think a low-key Pink Floyd vibe would be suitable for the exploration parts of gameplay.... Maybe this lively tune could play when the creature is first introduced to the "outside world" (when leaving the introductory birth-caverns). one lively song, one minute long
  2. uncertainty in AI

    yeah, it was my mistake to answer a topic I know nothing about, but I figure my answer is as good as any when someone asks how to "combine" belief nets and Java. :) How do I combine game design with Python? forgive me for the snarky remarks, im sleepy.
  3. uncertainty in AI

    I don't know anything about belief nets, but maybe you could use them to determine the fitness of a node in a neural network? If you're new to genetic algorithms and neural nets, ai-junkie has a decent primer. One highly-recommended book that I've been meaning to buy is Programming Game AI by Example. It supposed to talk about fuzzy logic, and might get you close to implementing belief nets.
  4. I had this same problem and started a different thread, but found out here that Windows Update KB978037 looks like the cause. I uninstalled it using Windows Update Remover and haven't had a problem since.
  5. Thank you both. In the link that frob gave me, someone figured out that windows update KB978037 seemed to be the culprit. I used Windows Update Remover to remove that update, and I haven't had a problem since.
  6. Hello again

    Here's to a quick recovery! God bless
  7. Fishy

    Its been awhile, but progress is being made on my fishy prototype. I have a friend that's mentoring me to help me finish this project. He's a lead designer at a game company right here in town. I'm starting to use some techniques from agile development to make a schedule and track my progress. I have a tenative deadline at the end of June. I've never written a design document before, but I'm struggling through my first draft for Aquarius. You can see my incomplete design doc here. I think the idea of the doc is to establish every feature the game will have ideally, and the finished schedule will show what I can have done in any given amount of time. *schedule not included My latest build is just a level where I test anything new and lay out all the creatures so far. I've lined up each type of creature in child/parent sizes, and shown a few in groups. I haven't made half the creatures I want yet. Demo (windows). Controls.txt Mouse to aim. Use E and D to move forward and backward. LMB to move forward. RMB to bite. Mouse Wheel to zoom 1-6 zoom level (6 is the highest real-game zoom) ~ is autozoom, on by default Hold R to grow. Caution: growing is fast! Hold T to shrink. Caution: shrinking too small will crash the program! Q AI waypoints G grid W wireframe C collision shapes V extended vision type (off, normal, small circle). Currently quite crappy. M "map" just shows the background gradient. and your position in the world as a red dot. I know its misleading but its not a high priority and wont be available in the game. U toggle culling. Note: you can see if culling is enabled by looking for the waypoints of creatures that are not on screen, there's no real indicator. I toggle the culling radii Esc pause / menu F2 toggle fullscreen. Note: some textures may disappear. you have to restart to get them back. F5 screenshot F6 experimental, crappy "motion blur" screenshot. SPACE toggle an in-progress control panel for the world. In-progress and not functional!! Oh yeah, I've moved my site to www.soulcraftgames.com and Soulcraft Games will be the name of my futuristic indie company.
  8. I'm having two weird problems with VC++ 2008. Sometimes it just exits with no prompt when I attempt to run a release build from the IDE. And much more annoyingly, sometimes in debug mode when there's an access violation I hit "break" and then "stop debugging" at the top- it stops debugging but won't close the console window... Which is ok except that I can't close the console window, or even shut down my computer because it won't close! I'll probably end up reinstalling VC++, but has anyone had these problems or know what causes them? [Edited by - Slather on February 17, 2010 7:50:34 PM]
  9. GLSL: can't turn texturing off?

    Quote:What value would you expect the sampler to return when there's nothing bound to it? I expected something like vec4(1,1,1,1) as a default because I had it working that way for days. Now I have no reason to believe it should have ever worked. I haven't implemented batching yet, so I was trying find an easier way to disable textures for now. I guess I can bind a "white" texture in the meantime. I've read that conditionals really kill shader performance, but I like the idea of parsing shaders and compiling multiple shaders based on options. Quote:... teaching people FFP before shaders ... Programming and game development has been one of my selt-taught hobbies for ten years now. I went from an OpenGL book I bought in 2004 to the Orange Book and using online reference. If GLSL was around then, I would have preferred to learn shaders alongside GL to begin with. So I agree! :) Thank you both.
  10. I think I'm losing my mind. I can't turn textures off anymore. I only use one texture at a time, and most of my geometry is rendered with textures disabled, but it doesn't show up at all. Its as if the sampler value in my frag shader is returning vec4(0,0,0,0) because any geometry without a texture doesn't render at all. All I do is multiply the sampler value with the current gl_Color. If I remove the sampler, everything renders fine (but without textures obviously). I've gone through the orange book and over my code many times now, but I've only found one hint- when my app exits, I print out the shader info log and get this: Quote:Validation warning! - Sampler value diff has not been set in fragment shader Validation successful. But I promise that I'm setting the uniform. Maybe the order is wrong? Here is how I'm enabling textures, and trying to disable them: /// ... load shader, link, use program ... /// ... get the compile status, print the program info log ... /// and everything is fine. glColor4f( 1, 1, 1, 1 ); // the alpha is non-zero glActiveTexture( GL_TEXTURE0 ); //glClientActiveTexture( GL_TEXTURE0 ); // do client textures affect this? glBindTexture( GL_TEXTURE_2D, &someTextureID ); GLuint loc = glGetUniformLocation( program, "diff" ); glUniform1i( loc, 0 ); // setting the uniform // render a textured quad here... glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, 0 ); // attempt to turn off texturing // render an untextured quad, but it doesn't show up! Here are my shaders: // vertex shader void main() { gl_FrontColor = gl_Color; gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); } // frag shader uniform sampler2D diff; void main() { vec4 texColor = texture2D( diff, gl_TexCoord[0].st ); gl_FragColor = gl_Color * texColor; } I am using GL with SDL. I have an ATI HD 4870 with three-month old driver that works great. Is there something simple I'm missing? Does glClientActiveTexture() affect geometry that's not rendered with VBOs?
  11. I hope you're not out of time already.... You can use the "move" command within different coord systems, but that only works at object-level (the node), not sub-object level (edges). in coordsys world move $ [30,0,0] But it seems like you want to move an EPoly's edges in the world coordinate system, like the "move" command. A mesh's verts are defined in the coord system of the node they belong to. To move them in the world coord system, you have to manually invert the node's rotation matrix, and multiply your translation by the resulting matrix. It effectively "cancels out" the node's rotation and means you're back to working within the world coord system when you do this (but you don't want to translate back to the origin, that's why you invert the rotation part and not the whole matrix). Try this line instead: move $.selectedEdges ([50,40,30] * inverse $.transform.rotation)
  12. My game shakes, sometimes.

    delta = timer.getTime(); Timer.tick(); if(delta == 0){ continue; } timer.reset(); Maybe its because you're resetting your timer every time your loop runs? Does getTime() update the timer, or just retrieve the delta? What does Timer.tick() do? If it updates the timer, then you're conditional will be true half of the time. That might explain why your FPS goes rapidly from 60 to 1000. currentState.update(); GameGraphics.clear(); currentState.draw(); GameGraphics.update(); Also, shouldn't the update order go like this? Update, clear frame, draw frame, swap buffers? [Edited by - Slather on January 1, 2010 8:47:05 PM]
  13. A problem with 3dsmax for creating a model

    Either the geometry is corrupted or you're not using the UV-unwrap modifier correctly. If the geometry is corrupted, you have to rebuild the model. A vase takes about 20 seconds ( create an editable spline in the Front viewport, apply a "Lathe" modifier, and then apply a "Shell" modifier, and then right-click and "Convert to an Editable-Poly", done!) For unwrapping the UVs, you need a texture that shows the texture-space in a useful way. The common method is to assign a checkerboard pattern to a material and use that to gauge the amount of texture-distortion on the model. THESE STEPS MIGHT BE SLIGHTLY DIFFERENT DEPENDING ON THE VERSION OF MAX YOU HAVE. I have version 8. To make a checkerboard material for UV-unwrapping: Go to the material editor ('M'), pick a new material, make sure the type is "Standard" (default). Find the "Maps" rollout, and the different map types (Ambient Color, Diffuse Color...) and click on the "Diffuse Color" button that says "None". This brings up a list of map types. Choose the 'Checker' type and click OK. It should bring you back to the material editor and show you a lot of options for the checkerboard. Find the "Tiling" spinners and change them both to 32 (or whatever you like. I use 32 usually). This makes the checkboard have 32x32 squares, which you'll need to gauge the "pixel density" of the map as it is seen on the model. Make sure your object is an Editable-Poly before trying to unwrap it. Apply a checkerboard material to the vase. Don't be suprised if you don't see a checker pattern on the vase yet, or if it looks weird, that's what unwrapping is for. Add an "Unwrap UVW" modifier to the vase. Press '3' to select the 'Face' sub-object level, and select all the faces (ctrl-A). Now in the Modifier Panel (on the right) find the Map Parameters rollout and click on the "Cylindrical" button. This uses a cylinder for reference to decide how to map the UV coordinates of the vertices. You can move and rotate the cylinder in the viewport to make the checkerboard pattern show how you want. A faster way is to press the "Align" buttons in that same rollout. I had to use 'Align Y' for my example vase (and 'Fit'). BE SURE TO CLICK THE "Cylindrical" button a second time so 3dsMax knows you're done with the cylinder. My result is this: Now you can apply an actual texture map and bask in the glory of your UV-unwrapped vase! [Edited by - Slather on February 17, 2010 12:54:34 AM]
  14. Propagation By Water, part 1

    I hate to break it to you, but the element is "Proliferation" not "Propagation", as in multiplying or breeding.
  15. Wow, its been another month already. I'm been making progress and killing bugs but I haven't finished a journal entry because I always feel like I'm explaining things in a way that isn't understandable or interesting. Anyway, I'll have gameplay-relevant entries soon. This one's about organization and deployment! Fun! Project Organization I finally organized my project folder to be much more simple. At the top level are the executable, DLLs, config file, and two folders: the "data" directory where all the game data is stored, and a "project" directory that stores everything related to the project. In the "project" folder I keep the source code/VC++ project, the game design folder where I plan the project and work on art assets and audio, the documentation folder (Doxygen), and the deployment folder. This setup makes it easy to exclude everything but the relevant files when I deploy the game. Deployment I finally have my deployment process streamlined. All I do is run a batch file and it takes care of everything before building the installer with NSIS. So far, it creates an filename list for the uninstaller, moves any screenshots out of the data directory (so the user doesn't install my screenshots, and I don't need to manually move them each time), and builds the installer. The uninstaller list is just a list of all the files in the program hierarchy that the uninstaller uses to cleanup. Any other files are left over after the uninstall, such as the log file and screenshots. In the NSIS build script, I exclude anything named "project" or any file with a .pdb or .ilk extension. The script automatically runs the VC++ redistributable and the OpenAL redistributable with the no-prompt option. Below, you'll my deployment folder. It has the script itself, the icons, the images used in the installer, the redistributables, the license agreement used in the setup, the filename list for the uninstaller (which is created with the installer in the same script), and the batch file that brings it all together in one command. This is the batch file: unList.exe /INSTDIR=C:\My_Stuff\PROJECTS\Aquarius move /y "C:\My_Stuff\PROJECTS\Aquarius\data\screenshots\*.*" "C:\My_Stuff\PROJECTS\Aquarius\project\design\screenshots\" "C:\Program Files\NSIS\makensis.exe" "C:\My_Stuff\PROJECTS\Aquarius\project\deployment\Aquarius.nsi" I use absolute paths to be clear, and the directory structure won't change anyway. It runs an app (you can find at the NSIS wiki) that makes a list of filenames for the uninstaller, then moves the screenshots into my project/design/screenshots folder, then builds the installer by calling makensis.exe with the script as an argument. Here's the NSIS script I use. If you want to start using NSIS, you could do worse than to start with this script and customize it to your project. Documentation I'm in the process of documenting my code with Doxygen. The config file for doxygen is loaded with comments that make it huge, and just repeat what the documentation says anyway. What I do is use the Doxywizard to create an initial config file (the last tab) and then manually copy+paste the abbreviated version into a text file. Its just much nicer to use the short version to make changes. I don't think the Doxywizard gives all the options it should (the "Advanced" tab is empty?), so this is what I do. I think documenting the code will help my understanding of what I've written, and make it possible to share the code or point to it as a reference. I plan to release the code for Aquarius once its sufficiently documented. I'm not going to try to make it "impressive", either. A lot of the code is being written to fulfill a single purpose, so I don't waste time writing generic code. It will all be in the docs.
  • Advertisement