• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

125 Neutral

About symbiote

  • Rank
  1. thanks. those links look pretty good. and useful information too
  2. hi guys, i want to create some 3D on an 8-bit cpu (but with ~4kb memory). basicly i want to be able to specify some shapes, with polygons that have orientation and position (probably with matrices). i thought about implementing 8-bit minifloats (bits: 1 sign, 4 exponent, 3 fraction/mantissa) for my computations, this would allow me to make small changes to smaller values. but not smaller changes to greater values. which would not be a problem with what is being viewed but it would be a problem in logic, such as calculating the distances between shapes. if i would try to store the positions of polygons relative to eachother within the same shape, then the values of the minifloats might not be so high. but the world would still have to have distances between shapes. also shapes that have linear speed would be hard to track the position of because miniflaots don't increment linearly. also designing a world with where shapes have these kinds of coordinates could be a problem. - should i try to implement a 16-bit integer format to solve the incrementation of speed? - should i drop the minifloat idea and do everything with 16-bit integers? - what do you normally do when you're world doesn't fit into floating points? (are there any special techniques?) - should i accept the 8-bit integers of the cpu and use that? (i doubt 127 values in each direction is big enough for all coordinates but it might be for what is on screen) any advice would be appreciated, symbiote
  3. [quote name='swiftcoder' timestamp='1297958706' post='4775429'] By 'run-time linking', do you mean that you are trying to load 'opengl32.dll' at runtime via [i]LoadLibrary()[/i]? If so, then you will need to load each and every opengl function with [i]GetProcAddress()[/i]. Runtime linking does not magically attach loaded functions to compiled entry-points. However, I also don't see any reason at all to attempt this - perhaps you can enlighten me? [/quote] i'm using a functional programming language and it's compiler can only use dll's this way, but it seems to crash when i call glBegin. so i figured it would crash in C as well with runtime linking, so there is where the question came from. in the meantime i have tried it using only C just to make sure, and it did not crash to my suprise. so it seems, it's the compiler that is faulty. i have submitted the issue to the developers. so i guess the question of this thread is no longer valid.
  4. i've been trying to use sdl by runtime linking a very simple program: SDL_Init( SDL_INIT_EVERYTHING ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); glBegin( GL_QUADS ); the window opens with what appears to be the right size. my program then crashes at the call to glBegin(GL_QUADS). when i leave out the call to glBegin, this does not happen. when i use dynamic linking and put this in my main function and include the sdl header, this doesn't happen. is runtime linking not supported by sdl? (i know that glBegin is implemented in opengl32.dll and i have linked to it)
  5. [quote name='Haxeleu' timestamp='1295915088' post='4764225'] Hello again as I am a beginnner I could couple of questions. As a career I want to do games development, The book that I got is C++ for gaming beginners and I've finished the book., soI now know all of fundementals. But the thing is that I am doing the games in cmd looking like, though I want to start the game with good graphics, can someone explain what is the difference between opengl and directx, also if I want to make the graphic in directx, can I just code C++ in that program, is directx a compiter with more graphic features? please explain. Thanks [/quote] directx and opengl are basicly a set of functions ( like all other libraries / APIs ). for opengl these functions are C functions that you can use to draw with hardware acceleration (directx probably has a C/C++ interface too). because they are C functions, you can call them directly from C++ after including their header files just like the standard library. you do need to setup your project to link to these libraries.
  6. [quote name='GraySnakeGenocide' timestamp='1295891236' post='4764013'] [quote name='nfries88' timestamp='1295890869' post='4764006'] I'm not familiar with managed languages like C#, but if it has some of the nifty bitwise features of C/C++ readily available then I have a feeling that the types of code using numbers that confuse you are related to programming concepts you've never learned -- bitmasks, bitarrays, and things of that nature. A good googling will teach you much about their more practical uses, if this is the case. But; really, to help you we will need to know what specific pieces of code are throwing you off. [/quote] Well, in my friends Pong code, he had a const float: // Percentage of the screen on every side is the safe area const float SafeAreaPortion = 0.05f; and this code Viewport viewport = graphics.GraphicsDevice.Viewport; safeBounds = new Rectangle( (int)(viewport.Width * SafeAreaPortion), (int)(viewport.Height * SafeAreaPortion), (int)(viewport.Width * (1 - 2 * SafeAreaPortion)), (int)(viewport.Height * (1 - 1 * SafeAreaPortion))) after first glance, I have no idea how that would come about, and my friend said its a "simple math calculation. Thing is, he said it takes alot of messing around number wise to get what he wanted. I know what casting is, I just don't know alot about it. [/quote] it looks like he is creating a rectangle that has some distance from the sides of the screen. Rectangle( leftX, upperY, rightX, lowerY ) screen coordinates normally start with the origin (0,0) in the upperleft corner and extend to ( width-1, height-1 ) in the lower left corner where you have to subtract 1 because 0 is also counted. the SafeAreaPortion looks like a tiny portion of 5%. ===left & upper=== he defines the leftX and upperY at 5% width and height, from the origin of the screen by multiplying the the width and height by 5% ( so thats the top right corner of the rectangle ). the lower left corner of the rectangle he positions by taking the complete width and height and then subtracing a little bit from it: ===rightX=== the rightX = 100% of the screenwidth minus (2 x 5% of the screenwidth) . so it gets positioned at 90% of the total width ( from the origin of course ). so there is a 10% space from the right edge. the 1 represents 100% and the 2 is used to multiply 5% by 2 to get 10% ( i don't know why he chose 10% for this edge ) ===lowerY=== the lowerY = 100% of the screen height minus (1x 5% of the screenheight). so it it gets positioned at 95% of the total height from the origin. leaving a 5% gap at the lower edge so the numbers represent proportions in this case
  7. [quote name='GraySnakeGenocide' timestamp='1295890662' post='4764003'] while and dowhile, I know. I believe my biggest issue, is when trying to put a game (like pong, etc) together, I completely blank out, and forget what I am doing, and I have to keep referring back to the code of the program that I learned from. In which case, I probably didn't learn anything. [/quote] from my own experience, for-loops are easier to type out than while loops. my mind wonders of too sometimes. you might need to break the problem down and focus on a smaller goal each time. if you really don't know what to do then you could try running the program and seeing what goes wrong. you might also want to try creating your own program, where you don't have an example.
  8. [quote name='GraySnakeGenocide' timestamp='1295889965' post='4763996'] Practice will be the easy part. I just don't know what I am going to do about the workshop I signed up for, seeing as how it requires some programming experience. I guess I can just follow along the best I can. But idk, figuring out what to practice after i've learned what ive previously practiced may be an issue I know how to make methods, and if else statements, and switch statements. Those I have down. Theres gotta be a way, lets just hope I can find it. [/quote] you could learn about while-loops and for-loops next. if you forgot how to do something, it helps if you have your own code as example to look at.
  9. [quote name='ZHarvey' timestamp='1295545199' post='4761938'] Reading up on network programming for gaming, and I'm choking on a few basic concepts. I'm interested in understanding the basics of OSI, particularly for the first five layers: * Application * Presentation * Session * Transport * Network Every tutorial/reference I find gives very abstract definitions and seem to assume the reader already has some decent networking knowledge. Can someone give me a super-simple example of either a client-client or client-server communication that would utilize any protocols in each of these layers? The more concrete the example, the more I will "connect the dots"! If you can simply explain what is happening at each layer (and why) I think I will be able to re-read some of the tutorial and things will start making a lot more sense to me. Thanks for any help here [/quote] if you are looking into understanding these layers to program games with network capabilities, then i think you are mostly wasting your time. the layers are only concerned with getting data from A to B. seems to me that this is typically something that you can read once and pretty much forget for the most part. you do need to know what for example an IP address and a Port are. i would start by learning about how common protocols such as UDP and TCP are used through Sockets which is the way you access the network in operating systems such as Linux and Windows (the API for these is similar too). whatever you need to know about the layers you could probably gain by learning how to use Sockets. because the layers "work" for the Application layer which is Sockets (WinSock API on windows). there are 2 types of sockets, blocking and non-blocking/asynchronous. - blocking Sockets are simpler but slower because they wait until data is sent/received. - non-blocking/asynchronous Sockets allows a thread to continue and check back later if data is received or can be sent. without automatically waiting this C++ tutorial is where i started learning about blocking sockets ( i'm not sure which language you use though ). it also has many abstract examples of what is happening that are not specific to C/C++. [url="http://www.madwizard...torials/netcpp/"]http://www.madwizard...torials/netcpp/[/url] you might need another tutorial on non-blocking sockets or what data from your games to send/receive and what the best strategies are for your clients and server(s) to communicate with each other ( which is probably where you should really be zooming in ). you might want to use a library/wrapper to have a nicer interface to the Sockets or to have platform independence. being GameDev.net this site must have some nice articles/tutorials too, but i haven't looked yet.
  10. [quote name='iMalc' timestamp='1295729528' post='4763129'] Almost anything that uses callbacks can have a wrapper written for it that turns it into a polling mechanism. What is the real reason for avoiding callbacks here? Are you merely unwilling to step outside the box? [/quote] i would prefer blocked waiting and i wouldn't want to write such a mechanism if i don't have to ( unless you know an easy way of course ). the real reason is that i'm using the compiler for the functional programming language Clean, that can only make use of C code by linking to functions in C *.obj files, and it doesn't work the other way round.
  11. [quote name='speciesUnknown' timestamp='1295715528' post='4763037'] SDL is not a GUI library, nor is GLUT (not really anyway). What do you mean "without callbacks" anyway? You might be interested in IMGUI techniques. These dont require callbacks either. [/quote] yeah SDL and GLUT are not really GUI libraries. that's also why i'm looking for others. with "without callbacks"... i mean without having to give the library a pointer to a function that it can call when an event occurs. i'm looking at the IMGUI techniques you mentioned. thanks
  12. - why are you checking if the node exists before adding it as a Neighbour? - i mean... isn't "Neighbours" array null by default? (it certainly looks like it since you don't write anything there when you don't find a Neighbour) you could try to nest some of those if statements but since it's a cube you will probably still have duplicate checks you could perhaps loop over node array more in a more direct way to makes things more compact. i made the following assumptions: - the "Neighbours" array contains null values by default - your "Neighbours" array contains a total number of 3*3*3 (27) elements - everything is ordered in the same way in your "Neighbours" array as in your "nodes" array i was thinking of something like this: [code] // loops over nodes for( int i = 0; i < width*height*depth; i++ ) { // get x, y, z of current node int z = i % (width*height); int y = (i-z) % width; int x = (i-z) - y*height; // check for potential neighbours (1 in each direction) for( int x2 = x-1; x2 <= x+1; x2++ ) { for( int y2 = y-1; y2 <= y+1; y2++ ) { for( int z2 = z-1; z2 <= z+1; z2++ ) { // get potential neighbour's index int j; j = x2*width*height + y2*width + z2; // check if potential neighbour is within array bounds and node is not it's own neighbour if( (0 <= j&&j < width*height*depth) && j!=i ) { // get x, y, z of the found neighbour, relative to the cube around the current node (for the Neighbours array) int neighbour_x = x2 - (x-1); int neighbour_y = y2 - (y-1); int neighbour_z = z2 - (z-1); // store the neighbour, assuming that Neighbours has 3*3*3 (27) elements that are null by default nodes[i].Neighbours[neighbour_x*3*3 + neighbour_y*3 + neighbour_z] = nodes[j]; } } } } } [/code] edit: i just noticed that i didn't check the lower bounds... fixed it edit2: i made it more readable
  13. i'm looking at C/C++ GUI libraries that can be used without having to make use of callbacks (so instead ex: polling, waiting for events) so far i know: * SDL is suitable * GLUT needs callbacks (AFAIK) * wxWidgets needs callbacks (AFAIK) - are there any other suitable libraries?
  14. hi guys, i am having trouble creating a matrix for an arbitrary axis and angle rotation. i can create a matrix for a rotation around either the x/y/z-axis. rotation of angle a around x-axis ( R ) | 1 0 0 | | 0 cos(a) -sin(a) | | 0 sin(a) cos(a) | what i tried to do is create a matrix forming the mapping of the chosen axis as the x-axis and 2 perpendicular vectors for the y-axis and the z-axis (right rotating) for the orientation of the rotation. orientation of rotation ( O ) | Xx Xy Xz | | Yx Yy Yz | | Zx Zy Zz | what i try multiply them like this... O * R * O^-1 * point point becomes rotated around the Z axis even though i specified the Y axis my goal was basicly to - map the chosen axis back into the x-axis - do a rotation around the x-axis - restore the mapping of the chosen axis could someone please explain what is going on here? i'm probably not going about this the right way.