Jump to content
  • Advertisement


Popular Content

Showing content with the highest reputation on 11/08/19 in all areas

  1. 1 point
    well I am making an asteroids and space wars hybrid. I got the ships to move around the screen and shoot bullets, I have also drawn a random location UFO, here is my code so far, let me know what you think. #include<freeglut.h> #include<iostream> #include<math.h> #include<time.h> using namespace std; float shipenemyAngle = 0.0f; float shipAngle = 0.0f; float thrust = 0.0f; float dx, dy, e_dx, e_dy, up = 0.0f, up_one = 0.0f; int animate = 0, animate_one = 0; int posX, posY; const float PI = 3.1415926; bool checkCollide(float x, float y, float oWidth, float oHeight, float xTwo, float yTwo, float oTwoWidth, float oTwoHeight) { // AABB 1 float x1Min = x; float x1Max = x + oWidth; float y1Max = y + oHeight; float y1Min = y; // AABB 2 float x2Min = xTwo; float x2Max = xTwo + oTwoWidth; float y2Max = yTwo + oTwoHeight; float y2Min = yTwo; // Collision tests if (x1Max < x2Min || x1Min > x2Max) return false; if (y1Max < y2Min || y1Min > y2Max) return false; return true; } void drawShip() { glPushMatrix(); glColor3f(1.0f, 0.0f, 0.0f); glTranslatef(50.0f, 0.0f, 0.0f); glTranslatef(dx,dy, 0.0f); glBegin(GL_LINE_LOOP); float offsets[4][2] = { {0.0f, 0.0f}, {-5.0f, -5.0f}, {0.0f, 10.0f}, {5.0f, -5.0f} }; float cosA = cos(shipAngle); float sinA = sin(shipAngle); for (int i = 0; i < 4; i++) glVertex3f(offsets[i][0] * cosA - offsets[i][1] * sinA, offsets[i][0] * sinA + offsets[i][1] * cosA, 0.0f); glEnd(); glPopMatrix(); } void drawEnemyShip() { glPushMatrix(); glColor3f(0.0f, 1.0f, 0.0f); glLoadIdentity(); glTranslatef(-50.0f, 0.0f, 0.0f); glTranslatef(e_dx,e_dy, 0.0f); glBegin(GL_LINE_LOOP); float offsets[4][2] = { {0.0f, 0.0f}, {-5.0f, -5.0f}, {0.0f, 10.0f}, {5.0f, -5.0f} }; float cosA = cos(shipenemyAngle); float sinA = sin(shipenemyAngle); for (int i = 0; i < 4; i++) glVertex3f(offsets[i][0] * cosA - offsets[i][1] * sinA, offsets[i][0] * sinA + offsets[i][1] * cosA, 0.0f); glEnd(); glPopMatrix(); } void drawUFO() { glPushMatrix(); glColor3f(0.0f, 1.0f, 1.0f); glTranslatef(posX, posY, 0.0f); glBegin(GL_LINE_LOOP); glVertex3f(-10.0f, 0.0f, 0.0f); glVertex3f(-5.0f, 5.0f, 0.0f); glVertex3f(5.0f, 5.0f, 0.0f); glVertex3f(10.0f, 0.0f, 0.0f); glVertex3f(5.0f, -5.0f, 0.0f); glVertex3f(-5.0f, -5.0f, 0.0f); glVertex3f(-10.0f, 0.0f, 0.0f); glVertex3f(10.0f, 0.0f, 0.0f); glVertex3f(5.0f, 5.0f, 0.0f); glVertex3f(5.0f, 10.0f, 0.0f); glVertex3f(-5.0f, 10.0f, 0.0f); glVertex3f(-5.0f, 5.0f, 0.0f); glEnd(); glPopMatrix(); } void timer(int val) { posX = -10 + rand() % 50; posY = -10 + rand() % 50; glutPostRedisplay(); glutTimerFunc(100, timer, 0); } void bullet() { up++; if (up >= 20.0f) { up = 0.0f; animate = 0; glutIdleFunc(NULL); } glutPostRedisplay(); } void bullet_one() { up_one++; if (up_one >= 20.0f) { up_one = 0.0f; animate_one = 0; glutIdleFunc(NULL); } glutPostRedisplay(); } void drawBullet() { glPushMatrix(); glColor3f(1.0f, 0.0f, 0.0f); glLoadIdentity(); glTranslatef(50.0f, 0.0f, 0.0f); glTranslatef(dx, dy, 0.0f); glPointSize(2.0f); glBegin(GL_POINTS); float offsets[1][2] = { {0.0f, 10.0f} }; float cosA = cos(shipAngle); float sinA = sin(shipAngle); for (int i = 0; i < 1; i++) glVertex3f(offsets[i][0] * cosA - offsets[i][1] * sinA*up, offsets[i][0] * sinA + offsets[i][1] * cosA*up, 0.0f); glEnd(); glPopMatrix(); } void drawBullet_one() { glPushMatrix(); glColor3f(0.0f, 1.0f, 0.0f); glLoadIdentity(); glTranslatef(-50.0f, 0.0f, 0.0f); glTranslatef(e_dx, e_dy, 0.0f); glPointSize(2.0f); glBegin(GL_POINTS); float offsets[1][2] = { {0.0f, 10.0f} }; float cosA = cos(shipenemyAngle); float sinA = sin(shipenemyAngle); for (int i = 0; i < 1; i++) glVertex3f(offsets[i][0] * cosA - offsets[i][1] * sinA*up_one, offsets[i][0] * sinA + offsets[i][1] * cosA*up_one, 0.0f); glEnd(); glPopMatrix(); } void coll_ship_one() { //draw bullet float x=0; float y=0; float oWidth=0; float oHeight=0; //draw plane float xTwo=0; float yTwo=0; float oTwoWidth=0; float oTwoHeight=0; if (checkCollide(x, y, oWidth, oHeight, xTwo, yTwo, oTwoWidth, oTwoHeight) == 1) { // drawcollision_one(); } } void renderScene() { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); drawShip(); drawEnemyShip(); drawBullet(); drawBullet_one(); drawUFO(); glPopMatrix(); glutSwapBuffers(); } void ChangeSize(GLsizei w, GLsizei h) { GLfloat aspectRatio; if (h == 0) h = 1; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); aspectRatio = (GLfloat)w / (GLfloat)h; if (w <= h) glOrtho(-100.0, 100.0, -100.0 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0); else glOrtho(-100.0*aspectRatio, 100.0*aspectRatio, -100.0, 100.0, 1.0, -1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void handleKeypress(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; case 32: animate = !animate; if (animate) { glutIdleFunc(bullet); } else { glutIdleFunc(NULL); } break; case 'a': shipenemyAngle+=PI/8; break; case 'd': shipenemyAngle-=PI/8; break; case 'w': e_dx += -2.0f*sin(shipenemyAngle); e_dy += 2.0f*cos(shipenemyAngle); break; case 'x': e_dx += 2.0f*sin(shipenemyAngle); e_dy += -2.0f*cos(shipenemyAngle); break; case 's': animate_one = !animate_one; if (animate_one) { glutIdleFunc(bullet_one); } else { glutIdleFunc(NULL); } } glutPostRedisplay(); } void handleSpecialKeypress(int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT: shipAngle+=PI/8; break; case GLUT_KEY_RIGHT: shipAngle-=PI/8; break; case GLUT_KEY_UP: dx += -2.0f*sin(shipAngle); dy += 2.0f*cos(shipAngle); break; case GLUT_KEY_DOWN: dx += 2.0f*sin(shipAngle); dy += -2.0f*cos(shipAngle); break; } glutPostRedisplay(); } int main(int argc, char**argv) { srand(time(NULL)); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE); glutInitWindowPosition(600, 400); glutInitWindowSize(800, 600); glutCreateWindow("Space Wars"); glutDisplayFunc(renderScene); glutKeyboardFunc(handleKeypress); glutSpecialFunc(handleSpecialKeypress); glutReshapeFunc(ChangeSize); glutTimerFunc(100, timer, 0); glutMainLoop(); }
  2. 1 point
    Hi , I made my Voxel Raycasting Games Source Code + Demo available for free. Its like Minecraft with integrated Voxel Sculpting to create new blocks. It contains a raycasting engine why I posted it here, https://github.com/sp4cerat/OutStar.VoxelGame
  3. 1 point
    Yes. std::size_t is always the appropriate type to express sizes. An index is not a size, it's a difference. It should be expressed as a signed integer. If you need a specifically-sized integer value, use a specifically-sized integer value. You rarely need such a thing, except for marshalling/unmarshalling data (which can include file I/O, network I/O, and communications with a coprocessor through an API).
  4. 1 point
    As a very picky programmer, I don't use size_t but define my own one. I think it is important to have different sized types because of the difference between x86 and x64 systems. While you can address a wide larger range of memory in an x64 system as you can cover even with an unsigned integer 32, you will be limitted to exactly that in an x86 system. Same is true for memory management APIs the OS provide and that aren't hidden behind any library. So what I do in my numerics.h header file of my SDK is to define my own type to something that can store at least the size of a pointer and make conditional an alias for size_t to the same size typedef SE::TypeTraits::TypeSelector<sizeof(void*), Unsigned>::Result varying; typedef SE::TypeTraits::TypeSelector<sizeof(void*), Unsigned>::Result uptrint; typedef SE::TypeTraits::TypeSelector<sizeof(void*), Signed>::Result ptrint; #if !defined(_SIZE_T_DEFINED) #define _SIZE_T_DEFINED 1 typedef varying size_t; #endif my classes like Array.h then work with the varying type to handle platform dependant sized integer values. However, the only cast I perform is from varying to size_t if targeting an OS API that requires it EDIT: The TypeTraits::TypeSelector declaration is template meta programming to select a platform dependant integer type from the provided list, that fits the size of the type desired to fit or fails with a compiler error. So it is guaranteed for an int32 to be signed and cover (at least) 32 bit for example
  5. 1 point
    I work on automated tool to generate regular surfel LOD hierarchies and seamless UVs to apply them to the mesh since... >2 years now, so don't use surfels!!!! haha (Especially not with terraforming.) This also means i'm actually focused with geometry processing, and i got rusty with GI. I'm also not up to date with ambient dice, which is interesting but just another new format to to represent the data (you surely know this: https://mynameismjp.wordpress.com/2016/10/09/sg-series-part-1-a-brief-and-incomplete-history-of-baked-lighting-representations/) But i can mention some lesser known alternatives to tracing on how to calculate GI. With the cascaded SH grid i tried two methods. The first was Bunnells interesting anti-radiosity trick to avoid expensive visibility determination all together, mentioned on the bottom here: https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter14.html He uses surfels, but it works with volume grid too. Beasically each voxels needs to gather a volume of neighbouring voxels from all cascades. Simple but bandwidth heavy. He tried to make games from the surfels method on last gen consoles. Here a result but it did not became a thing: You see it is fast and looks good, but the visibility trick causes color shifting bleeding through walls, making it unpractical for complex interiors. He proposed to fix this with labeling rooms, but that's just a hack. For outdoor games however, the approach seems suited very well and i don't know why it has never been used. The second approach i tried was diffusion. (Similar to Cryteks LPV, but not relying on screenspace) This solves the bandwidth issue, but speed of light becomes noticeable slow. Using a single SH volume also can not represent multiple bounces well - for this multiple volumes, or at least a second one to handle indirect bouncing would be necessary. This seems an example: The reason i gave up on those things personally was the inability to represent complex interiors with voxel mip maps and resulting leaking for indoor scenes. Sharp specular reflections are out of reach with any of this, ofc. IIRC, they offer two modes, the cheaper one uses the voxels only for visibility determination, so they could be represented by a single bit. Less memory -> higher res to solve leaking, eventually. I guess it works somehow like this: https://software.intel.com/en-us/articles/layered-reflective-shadow-maps-for-voxel-based-indirect-illumination Maybe it's fast enough EDIT: I'm optimistic, looking at this for example: http://teardowngame.com/ Seems he does not do anything special: http://blog.tuxedolabs.com/2018/10/17/from-screen-space-to-voxel-space.html
  6. 1 point
    Nope, just use: for (size_t i = x + 1; i-- > 0; ) ... as an alternative for for (int64_t i = x; i >= 0; --i) ... Regarding the topic: I don't like about size_t that it has a varying memory footprint depending on your build setup. As a programming control freak, I only use size_t when it is necessary. Mostly when messing around with STL container sizes and raw memory. For everything else, I think about the expected value range and pick one of the following typedefs: #include <cstdint> using I8 = std::int8_t; using I16 = std::int16_t; using I32 = std::int32_t; using I64 = std::int64_t; using U8 = std::uint8_t; using U16 = std::uint16_t; using U32 = std::uint32_t; using U64 = std::uint64_t; If there is no special requirement I mostly stick to the 32bit integers (loops, indexing, etc.). The value range is large enough in most cases and it is twice as fast as 64bit integers (or size_t in a 64bit environment) if your compiler is able to vectorize your code. However, for the things you mentioned, I think there is no real drawback in using size_t. Only if memory footprint or (vectorized) performance get important you should think about alternatives. Greetings
  7. 1 point
    Ambient Dice is an overall better choice than spherical harmonics if you're going that route: https://www.ppsloan.org/publications/AmbientDice.pdf You can choose two different ways of using it: Store in worldspace grid, and your solution ends up looking like The Division/RTX GI Pros: Cheap runtime lookup with cost independent of scene complexity. Cons: Solid, static geometry highly preffered, dynamics hard/expensive/limited; updating good multilightbounces takes time/code complexity; very limited specular resolution. Or you can store a spherical basis at the object level as a set of vpls, then splat ala Square-Enix Pros: Arbitrarily dynamic, excellent and arbitrary specular/diffuse resolution. Cons: Shadowing is separated, have to use signed distance field/conetraving/raytracing/whatever, expensive runtime lookup dependent on scene complexity; multilightbounce is expensive/difficult. Those are the two major ones I can think of if you don't want to try split cone tracing, or waiting to see if Cryengine explains what they're doing in a readable manner (The Hunt: Showdown shows almost no leaking, somehow). The former one is the one shipped in The Division 1/2, and I suspect is coming to other titles, and is obviously more practical if you're not changing large scale geo a lot. If you wanted small doors you could probably hack it using RTX's probe influence channel thing ignore doors/windows, have doors/windows be analytic shapes, and trace against analytic shapes from probe location if there's a door close by, then cutoff probe influence based on the trace. Something similar is done for Hitman, and it looks Ok-ish. As for large scale terrain, just trace along a heightfield and call if good if you're far enough from the camera: https://slideplayer.com/slide/5173643/
  8. 1 point
    I guess you have to match the transition to to coarser cascade. Likley the coraser always overlaps the finer, so fine data is always there but coarse is easier to miss? It should work somehow, even with constant step size per cascade. (But the step size should be one edge of a voxel, not the diagonl which is longer and so could miss one voxel. But otherwise i lack experience with constant step size. DDA surely works exactly, but is more expensive i guess.) I think it would be hard to get robust solid results eventually, and it is additional cost, also the internal vaxels could be unlit depending on what you do. So i would not give up yet. Maybe you need to have more overlap in case the center of corse cascades is empty. Unfortunately most people do not implement cascades, so there is little help, but it should work... This is what i tried many years ago for realtime GI. I i gave it up in favor of surfels, but maybe i can say something about it... What are your requirements, dynamic / static? Diffuse GI / specular reflections?
  9. 1 point
    Let’s say you have made a game. It’s working quite fine and in your opinion, it is extremely interesting to play. Will it be enough for becoming a new hit? What level of sales can you expect to get? This article is my attempts to analyze some general and insider information, gathered throughout years of working on different games and communicating with colleagues. Unfortunately, a possibility of finding a simple answer to this question is slim to none (which is not really different from trying to find some solution to other issues like “How to become successful” of “How to win one’s heart”). What is worse – it’s a lack of some proper statistics or at least, some trustworthy information on sales levels and promo feedback. Out of publicly available information, we can rely only on the number of reviews and players on steam, postmortems, positive twits and marketing presentations of developers. Half of this information is worthless but could be enough for some approximate estimation. Confidential information usually pops up in terms of a crisis, when this or that company goes bankrupt or a new post like “Our game has failed” turns up. In these cases people don’t care about conversions or organic anymore and tell the truth. Gearstorm. Procedural sci-fi sandbox Well, enough of the initial data, so what about the goal? How to determine the level of your product’s success? I consider gamedev to be a part of the art world and making games is more of a calling than a job. But bare enthusiasm is not enough for living, so I have come to this idea – if you are doing what you like without any need of working extra hours in Walmart - you are doing fine. It means your games bring you and your family enough money for living and if any of these games one day becomes a hit – it will be only a pleasant but sufficient enough bonus. To keep it simple – let’s estimate the costs, based on the average industry salary and the time spent on making a game (in case if you are not hiring anyone). Gamedev is a poor industry when it comes to wages of average employees, so don’t count on more than $30 per hour. Let’s add more sad facts: It’s rumored that only 16% of games get any money at all If it is so, two reasons might have led to such an outcome, in my opinion. Numerous advisors tell you to release as many small games as possible, counting on the possibility of one of them to breakthrough. It’s a bad idea. This amazing model of behavior makes the market full of trash. In order to save up money and accelerate the release, these developers come up with raw and dull games. So, everybody is suffering from it. A good idea would be to start many projects, work on them up to some sufficient demo level and go public. If nobody wants a prototype with a well-determined unique main feature – give it up and start working on a new one. That’s how you can save lots of time and the general quality of the ready-to-play indie-games will increase. But don’t call your tech demos as “early access” and don’t waste time examining the market for years. The second is a problem of any creative person. I like to compare gamedev with music. Imagine, one day you decided to give up on everything and become a solo developer, sounds like an ordinary story, right? And now let’s imagine being in exactly the same situation, with the same zero knowledge of the subject, but this time you have chosen music. “Yeah, everybody is listening to music every day. What is difficult about playing something myself? Give me some advice on what instrument is the best, folks!” Doesn’t sound very optimistic, right? For some reason, forthcoming musicians study a lot, get together in groups and never expect that their yesterday-made track in their dad’s garage will become a hit. I have never seen an amateur guitarist, who would have such confident and overoptimistic outlooks of life as a typical developer from /r/Gamedev or UE4 forum. The higher you fly, the more painful it is to fall. Shining eyes of the latest go dim every time he/she faces the reality: bugs, procrastination, and, most importantly – misunderstanding. No one hears you and if they do – they mostly criticize you. A popular decision in this case is to give up halfway and release what you have. Last Joy. cRPG about death in a world of immortal people How many beginner musicians have become famous? Or at least, paid off their educational costs. I think everybody will agree it’s less than 1%. Your game, probably, has even fewer chances of success. But even the most basic game requires at least 100 hours of work, meaning you have to sell more than 600 copies ($5 each). Sounds realistic but the level of difficulty in this current situation can be seen in the following example. It is like approaching a stranger on the street and trying to sell a book. And even in this case you have an advantage of some real-time contact and lack of competition at that particular moment. It is obvious that on the internet hundreds of people fight for attention of a potential buyer simultaneously. Don’t rely on ordinary ads. I spent more than $240 in Google Ads during one night for my first game and received only 2 installations. On Facebook it turned out to be impossible to even figure out the budget in order to start showing the ad. It was already $50 for an estimated installation (more probable that it would be $500). Don’t think that once you create a page in a store you will start selling. No channel nowadays brings any organic installations (even though there are some individuals who manage to get 90% of the traffic from the “More Like This” section on Steam). But if you decided to give it a shot anyways, try to search for some growing portals which are obtaining content and money artificially. I have lost $235 advertising my first game. Good news – if your game is good, after the first hundred of players you will face a problem of sales less and less regularly and the word-of-mouth will be in action. What unites good games? Reasonable price. There is a golden rule that says – a casual player should pay $1 for one hour of gameplay. If it’s less – it is fine as well, if it’s more – you have higher chances of getting negative reviews, being called greedy and being nit-picked. Eye for detail. The game should create a feeling of being worked on hard. Marketplace assets along with tutorial framework will never breakthrough. Polishing up the game will take 20% of the time but give 80% of the result. The point is to know when to stop because the process might last forever. Right choice of the target audience. So much has been written about it – it’s the basic rule of business. The above is obvious but in order to be estimated by anyone you have to attract attention of potential players first. And as a result, the determining factors of success are: Community support. Even if you are making crappy games but people already play them you can simply keep releasing series after series and make good money out of them. Even in case if your community is not made of gamers but a bunch of SJW paladins instead, they will be forming hype around everything you do anyways. The core of the game is so unique and fresh that one can’t help noticing it. I guess it’s the easiest way. I am personally trying to follow this strategy in my projects. Connections. A journalist of a well-known portal can find some space for your announcement. A famous media person can have a word with investors. An employee of a distinguished company can assist you with a grant for some commission. Yes, corruption as it is, unfair competition and everything else typical of our world. I have been personally advised to write a guy, helping with receiving EpicMegaGrants. It was like: “Text him on Linkedin as we did and that’s it, you will get your 30 thousand…” Abuse of rating systems in digital stores. It seems like the programmers themselves don’t know their ranging algorithms (Steam, for instance, can’t even configure their account server). I am not even speaking of the Google Play ads, there are so many theories of how you can be promoted there once you sign up. The worse the system is working, the easier it is to break it. And who knows, maybe you are the one who knows the secrets of promotion. Simple luck. Game announcement is similar to a longread on Reddit. Imagine you are tossing a 1d20 dice with each post. The post gets in “hot” only if you have a crit, 19 posts out of 20 will be lost amongst hundreds of announcements. A famous reviewer can accidentally pick up your game among numerous options and make a living for you, dooming others to stay poor. The chances depend directly on the length of the list. By the way, not all influencers are equally useful. I was lucky to have a few discussions with the authors of the games which were streamed with 30k+ audience. Guess, how much it increased their sales? Zero. Literally, zero increase. A vivid example – Balancelot, which was streamed by Lirik and Forsen. The guys who made the game, not to fall apart, had to start making a new one right away, using the same assets but in a different genre, less casual. Here is a checklist. Take a pencil and tick the points that really characterize your project. If you have ticked all the points from the first list and at least one from the second – keep going! Chances are you will get in that golden percent. Your success is just around the corner, finish up what you have started. Otherwise… Alien Seasons. Mindless platformer for kids. As I have already said, if you are happy, you have some funds to keep living, your wife is not nagging you for wasting youth in front of PC, why not? You can consider you game to be already successful. You have found your calling – something most people dream of having throughout their entire lives and some of them give up on searching too early.
  10. 1 point
    It's possible by using ID3D12InfoQueue: device->QueryInterface( ... d3dInfoQueue ... ); D3D12_MESSAGE_ID hide[] = { D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE, D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE, }; D3D12_INFO_QUEUE_FILTER filter = {}; filter.DenyList.NumIDs = 2; filter.DenyList.pIDList = hide; d3dInfoQueue->AddStorageFilterEntries(&filter);
  11. 1 point
    Also, the following three all produce the same code on gcc, clang and msvc with optimizations enabled (but only one is actually legal) #include <string.h> float sqrt1(float n) { int ni; memcpy(&ni, &n, sizeof(n)); int ui = 0x2035AD0C + (ni >> 1); float u; memcpy(&u, &ui, sizeof(u)); return n / u + u * 0.25f; } float sqrt2(float n) { union {int i; float f;} u; // no need for the static! u.i = 0x2035AD0C + (*(int*)&n >> 1); return n / u.f + u.f * 0.25f; } float sqrt3(float n) { int i = 0x2035AD0C + (*(int*)&n >> 1); return n / *(float*)&i + *(float*)&i * 0.25f; }
  12. 1 point
    These are the books that most people recommend for learning AI: "Programming Game AI by Example" - Mat Buckland (easily the most complete beginner book on game AI) "Artificial Intelligence for Games" - Ian Millington "Introduction to Game AI" - Neil Kirby (more of a basic level text with code in VB) "AI Game Engine Programming" - Brian Schwab "Behavioral Mathematics for Game AI" - Dave Mark "Artificial Intelligence: A Modern Approach" - Russell and Norvig Additional reference books: "AI Game Programming Wisdom" series - Steve Rabin, editor "Game AI Pro" series - Steve Rabin, editor "Game Programming Gems" series Sites full of game AI goodness: AIGameDev - Alex Champandard (the go-to place for articles, papers, interviews, etc.) AI Game Programmers Guild - home page of the AIGPG with lots of links to papers and presentation slides Game/AI - blog with various authors IA on AI - blog with commentary on game AI Post-Play'em - blog with observations on AI in actual games Digesting Duck - Mikko Mononen's blog (Recast & Detour) Events/Conferences: Game Developers Conference GDC AI Summit AIIDE (Artificial Intelligence in Digital Entertainment)
  13. -1 points
    You are missing the shiny wow effect. Thats what missing in a laptop only. Use analog gear.
  • Advertisement
  • Advertisement
  • Popular Contributors

  • Member Statistics

    • Total Members
    • Most Online

    Newest Member
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!