• 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

139 Neutral

About giaym

  • Rank
  1. It isnt THAT complicated, it isn't perfect however, they love to "update" the engine and break every single mod out there, then promise a fix, and take their damn sweet time to fix it (you better just figure out how to hack around the problem). Then you do have to negotiate a license whenever you finish your "mod", usually that happens after you manage to get greenlit on their greenlight section. If that happens you'll have to shell some big cash upfront (havok license) and get to terms with valve on how to pay for their engine (probably another cut from sales, the first being from steam).   It is a nice engine to work with if you are a beginner to game programming that already handles c++. If you cant handle c++ however then, well, learn it...   You'll need a team or be a one man army though, it has an art pipeline you have to learn afterall.
  2. snake? pac man? you could go crazy and make it an ion cannon (center is the crosshair, and you shoot giant anteroids, you "rotate" with your controls and when you see a big red lump growing bigger, center it and shoot
  3. well if you arent simulating the entire galaxy rotation and galaxies moving away from each other and stuff, then you could cut corners on more things, because calculating everything sounds like a lot of math.   planet 1 is a position X, planet 2 at B now, depending on the situation you would want to WAIT for your launch because another date will provide an EARLIER arrival, for example, if you go all simulator-ish. Also imagine the planets orbits moving them in a way that the sun (or another planet) is on the way, your ship will go through it.   I assume you have orbits a a mathematical function?, for in-system travel I'd suggest you calculate the distance to travel at launch, set that as a the travel distance no matter what (even if the planets are accelerating away from each other at the time), and update the travel % each tick if you must (you don't need to know the planets current position for this btw, and no you dont need to update the % every tick either).   Then when you need to display the ship on screen, just make a nice spline curve that follows the possible orbit (or counter orbit) between the current position of both planets and set the ship at the correct % of the way, regardless of the actual current distance seen vs traveled, doubt anyone will notice you are off a few light years, or care, even if they do notice. Doing this you could solve the "planet in between" issue by detecting if your ship is inside a planet, and adding an "slingshot" curve around that planet, then draw the ship using it as a slingshot.
  4. Ok you want one player to be super fast (super fast controller input) and play the game in slow mo (super slow visual output). And the others to see everything real time because their speed is normal, that would include seeing the fast player being, well, fast. If you keep real time controller input on the fast player you get a problem. The fast guy can play things in slow-mo since the other players are giving enough input and he can cache it and play at a lower rate client side. But the slower ones can't predict what button is the fast player going to press in 3 seconds. If they aren't supposed to interact (ie. fight, collide, etc) with each other, and won't, then they don't need to know what is exactly going on, the slow guy might just see speed lines and hear whizzles in the general direction where the fast guy should be. Fine, but you say they are fighting so I guess it doesn't help you. The fast player is looking at this slow mo video that will need to catch up sometime. How you do that without jumping directly to the current time is up to you. Now, doing exactly what you want without any lag or anything crazy would end up desynching the players, for one to be faster then he has to be actually faster or the other slower, with the problems that any of them would result on player control ("I can't control him, he is too fast!" "He is too slow"). You can speed up one a little and slow the other, so they don't hate it. That won't let you have insane speed differences though. Now I guess you prefer to keep the most players without network problems, you can't slow the simulation of the slow guys so they will be playing the game a normal speed, server speed. It is just the problem of the fast player, if he wants to make use of his super speed he will have to live with the problems. Since the server speed will be that of the slow players, then the fast player will have to provide input fast. A button (mouse scroll?) that lets the super fast player control his speed so he can accelerate while standing still and punching, or when moving in a straight line. That way he can still stay in control when he needs to move with precision, a Turbo button. When in turbo, the screen plays in slow-mo but the input doesn't slow down, it stays real time, faster than normal because you are in turbo mode. Slower players receive your super quick movements realtime, that way the only one desynching is your screen. If you drop the slow mo on the fast player then you get no problems really. If you don't you can help removing idle frames and playing at regular speed until you start giving input.
  5. Well if I understand correctly you want a viewport with your camera, and if you exit the viewport you can interact with other things, like your menu (wether it is a win32 or opengl menu). The camera could grab (and hide) the mouse when you click (and hold) on it and release the mouse when you release click. If you don't want to click and hold to use the camera you can set/unset camera mode by pressing a button or something. You shouldn't have the camera and the toolbar/menu working at the same time, you are in control of one or the other, and the transition from camera/menu shouldn't require you to move the mouse. Grab/Release also helps when you want to click something outside the app, if you keep the mouse grabbed all the time it can be annoying. Now, if you don't want to center the mouse on screen on every iteration, you can save the last position of the mouse (another variable on your class) and substract from the current one and get the delta that way. Now, I guess it stops moving once it reaches the edge of the screen, otherwise you wouldn't be centering it, so you would have to take that into cosideration and center the mouse when it is reaching the edge. You still have to center the mouse on grab and on release.
  6. Yup my "view" is actually a Target vector. I was rotating the target with a quaternion meant for the view duh, I would have never found the problem myself thanks. The movement functions were also wrong but it was easy to fix once the rotation worked. The main post has the "working" code now (well it won't compile as is). [Edited by - giaym on September 26, 2005 9:29:37 PM]
  7. Solved. Code is edited so it works. Hello, I'm new to 3D programming, I've been working on this the whole day and although I have learned a lot I can't finish this free-look camera so please check the code for anything that is wrong. I hope I'm making some dumb mistake with the math so it is easy to fix The function mouseRotate() does the job of rotating, the other functions are not my main concern right now, it looks like they should work, at least on paper. I'm multiplying the x and y rotationQuats hoping to get a general rotationQuat, it worked perfectly while at 0,0,0 but when I tried a different position it started rotating around an axis (i guess it's rotating around 0,0,0). I'm not sure if it is the rotation code (I tried drawing the rotations on paper and it looks fine), something I just thought is "it could be the render order on the rendering function". /* * Camera.java * */ package game; import org.lwjgl.opengl.*; import game.util.VectorUtil; //has - + * / functions etc public class Camera { /** * dx, dy are between [-1.0d, 1.0d] * x/ySensitivity are between [0.0d, 1.0d] * * Recalculates upVector and view Vectors for dx and dy mouse rotation */ public void mouseRotate(double dx, double dy, double xSensitivity, double ySensitivity) { VectorUtil view = VectorUtil.subtract(targetVector, position); VectorUtil vRot; //Mouse-Y Rotation, rotation on our view vector x up vector VectorUtil vCross = VectorUtil.cross(view, upVector); vRot = VectorUtil.normalize(vCross); //dy must be negated for some reason double yRotAngle = -dy * ySensitivity; //angle if(yRotAngle > 1) yRotAngle = 1; if(yRotAngle < -1) yRotAngle = -1; //don't rotate if no delta game.util.Quaternion tempA; if(dy == 0.0d) tempA = new game.util.Quaternion(0, 0, 0, 1); else tempA = new game.util.Quaternion(vRot.x * Math.sin(xRotAngle/2), vRot.y * Math.sin(xRotAngle/2), vRot.z * Math.sin(xRotAngle/2), Math.cos(xRotAngle/2)); //Mouse-X Rotation, rotation on our up vector vRot = VectorUtil.normalize(upVector); //dx must be negated for some reason double xRotAngle = -dx * xSensitivity; //angle if(xRotAngle > 1) xRotAngle = 1; if(xRotAngle < -1) xRotAngle = -1; game.util.Quaternion tempB; if(dx == 0.0d) tempB = new game.util.Quaternion(0, 0, 0, 1); else tempB = new game.util.Quaternion(vRot.x * Math.sin(xRotAngle/2), vRot.y * Math.sin(xRotAngle/2), vRot.z * Math.sin(xRotAngle/2), Math.cos(xRotAngle/2)); //We mutiply both rotations to get THE rotation, am I wrong here? //tempA rotationQuat generated by moving the mouse up/down //tempB rotationQuat generated by moving the mouse left/right //THE rotation is assigned to tempB... tempB = tempA.getMultiplicationBy(tempB).getNormalized(); //we apply the rotation to the view vector, that way we can get the new targetVector game.util.Quaternion viewQuat = new game.util.Quaternion(view.x, view.y, view.z, 0); game.util.Quaternion result; result = tempB.getMultiplicationBy(viewQuat).getMultiplicationBy(tempB.getConjugated()); view.x = result.x; view.y = result.y; view.z = result.z; //find "rotated" target vector targetVector = VectorUtil.add(position, view); //we apply the rotation to the up vector game.util.Quaternion upQuat = new game.util.Quaternion(upVector.x, upVector.y, upVector.z, 0); result = tempB.getMultiplicationBy(upQuat).getMultiplicationBy(tempB.getConjugated()); upVector.x = result.x; upVector.y = result.y; upVector.z = result.z; //finished } public void strafeCamera(double speed, double direction) { // Get the normalized strafe vector VectorUtil strafe; VectorUtil vCross = VectorUtil.cross(VectorUtil.subtract(targetVector, position), upVector); strafe = VectorUtil.normalize(vCross); // Add the strafe vector to our position position.x += strafe.x * speed * direction; position.y += strafe.y * speed * direction; position.z += strafe.z * speed * direction; // Add the strafe vector to our view targetVector.x += strafe.x * speed * direction; targetVector.y += strafe.y * speed * direction; targetVector.z += strafe.z * speed * direction; } public void flyCamera(double speed, float direction) { // Get the normalized "strafe" vector, vertical up/down movement VectorUtil strafe; strafe = VectorUtil.normalize(upVector); // Add the strafe vector to our position position.x += strafe.x * speed * direction; position.y += strafe.y * speed * direction; position.z += strafe.z * speed * direction; // Add the strafe vector to our view targetVector.x += strafe.x * speed * direction; targetVector.y += strafe.y * speed * direction; targetVector.z += strafe.z * speed * direction; } public void forwardBackCamera(float speed, float direction) { // Get the normalized "strafe" vector, forward / back VectorUtil strafe; VectorUtil vCross = VectorUtil.subtract(targetVector, position); strafe = VectorUtil.normalize(vCross); // Add the strafe vector to our position position.x += strafe.x * speed * direction; position.y += strafe.y * speed * direction; position.z += strafe.z * speed * direction; // Add the strafe vector to our view targetVector.x += strafe.x * speed * direction; targetVector.y += strafe.y * speed * direction; targetVector.z += strafe.z * speed * direction; } //Use the view up and position to lookAt public void look() { //camera props to openGL org.lwjgl.opengl.glu.GLU.gluLookAt((float)view.x, (float)view.y, (float)view.z, (float)position.x, (float)position.y, (float)position.z, (float)upVector.x, (float)upVector.y, (float)upVector.z); } VectorUtil position = new VectorUtil(1.0f, 0.0f, 0.0f); // Initial position VectorUtil targetVector = new VectorUtil(0.0f, 1.0f, 0.0f); // Init the view to a std starting target (vector from 0,0,0 to position the camera looks at) // The view vector can be obtained by substracting position - target. VectorUtil upVector = new VectorUtil(0.0f, 0.0f, 1.0f); // Init the UpVector } Deleted several lines to help reading the important lines... The method handleInput is the important one. The camera rotation is "rendered" at the render() function by calling the method at Camera.class. Class attributes at the bottom. /* * Game.java */ package game; //OpenGL library import org.lwjgl.Sys; import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.glu.GLU.*; public class Game { /** * Initializes the game and sets it running by entering the main game loop. * After the main loop is broken from within it cleans everything up. */ public Game() { // Initialize the game // Create mouse initGame(); // -> cam = new Camera(); // -> gamestate = RUNNING /** * Start the game */ gameLoop(); /** Cleanup */ cleanup(); } /** * Check for mouse and/or keyboard input and act accordingly. */ private void handleInput() { /** * Mouse.getD?() returns an integer with the pixel's delta * (ie. -1 or -3 if moved the mouse to the left) * dx and dy become a number between -1.0d and 1.0d. */ double dx = (double)(Mouse.getDX() * 1) / ((double)(displayWidth) / 2.0d); double dy = (double)(Mouse.getDY() * 1) / ((double)(displayHeight) / 2.0d); //call camera rotation cam.mouseRotate(dx, dy, xSensitivity, ySensitivity); if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) gameState = gameStates.EXIT; if(Keyboard.isKeyDown(Keyboard.KEY_A)) cam.strafeCamera(K_TURN_SPEED, 1.0f); // The -+1.0f are the direction of the movement if(Keyboard.isKeyDown(Keyboard.KEY_D)) cam.strafeCamera(K_TURN_SPEED, -1.0f); if(Keyboard.isKeyDown(Keyboard.KEY_SPACE)) cam.flyCamera(K_TURN_SPEED, 1.0f); if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)) cam.flyCamera(K_TURN_SPEED, -1.0f); if(Keyboard.isKeyDown(Keyboard.KEY_W)) cam.forwardBackCamera(K_TURN_SPEED, -1.0f); if(Keyboard.isKeyDown(Keyboard.KEY_S)) cam.forwardBackCamera(K_TURN_SPEED, 1.0f); } /** * Renders the scene. */ private void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // Reset The Current Modelview Matrix //1. Rotate, translate camera cam.look(); //2. Translate //3. Render Renderer.drawCube(0.0f, 0.0f, -5.0f, 2.0f); Renderer.drawCube(0.0f, 0.0f, 5.0f, 2.0f); Renderer.drawCube(0.0f, -5.0f, 0.0f, 8.0f); Renderer.drawCube(0.0f, 5.0f, 0.0f, 8.0f); Renderer.drawCube(5.0f, 0.0f, 0.0f, 4.0f); Renderer.drawCube(-5.0f, 0.0f, 0.0f, 4.0f); } private double xSensitivity = 0.5d; private double ySensitivity = 0.5d; private Camera cam; private static final float K_TURN_SPEED = 0.75f; } The Quaternion class, all of its operations return a new object containing the results. /* * Quaternion.java * */ package game.util; public class Quaternion { /** Creates a new instance of Quaternion */ public Quaternion() { x = 0; y = 0; z = 0; w = 0; } public Quaternion(double x, double y, double z, double w) { this.x = x; this.y = y; this.z = z; this.w = w; } public double length() { return Math.sqrt(x*x + y*y + z*z + w*w); } public Quaternion getNormalized() { Quaternion q = new Quaternion(x, y, z, w); double L = q.length(); q.x /= L; q.y /= L; q.z /= L; q.w /= L; return q; } public Quaternion getConjugated() { Quaternion q = new Quaternion(-x, -y, -z, w); return q; } public Quaternion getMultiplicationBy(Quaternion B) { Quaternion C = new Quaternion(); C.x = w*B.x + x*B.w + y*B.z - z*B.y; C.y = w*B.y - x*B.z + y*B.w + z*B.x; C.z = w*B.z + x*B.y - y*B.x + z*B.w; C.w = w*B.w - x*B.x - y*B.y - z*B.z; return C; } public double x; public double y; public double z; public double w; } Thanks in advance ^^ [Edited by - giaym on September 26, 2005 9:56:47 PM]
  8. Netbeans is another good IDE.
  9. 1) If I the view was third person in "god mode" (not "always behind character") it would be more likely that I accepted those and started roleplaying. If the view was first person, I would need a lot of sound input to believe the "camera" is me. 2) If there's a visual indication, certainly. Thinking of diablo 2 I would feel intimidated when suddenly my character had an enemy aura that lowered my stats... Then I noticed it and re-read the post: I can't say if its true for women, but I can say that the one about men is true at least for me, I was replying to your questions and I realized that my responses were about tactical, conflict proximity, etc reactions (as you can see above) Now real answer: 1) Not really, I think I would need good input of those feelings the game wants me to feel... it doesn't really matter if the view is third or first person, and what the setup of the story is. That is if you want me to _feel_ something, I remember feeling the character's sadness, happiness, etc from many SNES rpgs, it was the text, the music, the sprite animation. When I saw the trailer for Killzone 2 (first person view) I really felt a lot of things, not the wow! at the graphics, the video really sucked me into the eyes of the 'character' you are supposed to be playing, I felt really scared that 'I' was trying to survive and try to get my team not killed, that I had to keep my eyes open, sadness when my teammates got shot, etc. But of course that required heavy audio and video input and is more like visceral. However, the point is that when you are playing fast paced games you don't have much time to think on feeling. If I felt all of that is because it was a video, the snes games used 'cutscenes'. While watching a movie you can certainly get sucked into it and share the characters fellings because you pay attention to the details. 2) I'd take that as 'danger' that required some 'tactical thinking' as what to do... considering I can move, that I can attack him (the game won't punish me), and that the duke will attack me. If he won't, then I would treat it as a cutscene (or soon-to-happen cutscene via-something-I-must-trigger). To take a extreme, if there's no fight and I can enter and leave the room as I please then it would be dumb. 3) Should your character ever do anything YOU wouldn't do, via cutscene or after-report. (Example 1: You fly into a rage whenever you see your mortal enemy. When they appear on the screen, you have to play a minigame to get control. If you lose, no matter where you are, your character screams, rushes at the enemy, and begins pummeling them.) (Example 2: You're pursuing a mission involving nanite-based mental hijacking. You sit and drink with a trusted senator you're interviewing and he begins talking. Fade out. Screams. Fade In. You're crouched in a dark room, dressed in black, holding a sniper rifle. You look through the sights. You see the President, dead, a smoking hole in his chest. People are shouting and pointing up at you.) Both examples have a visceral part, you should try putting something that is exclusively related to the mind so you can check if the generalization is true or not ^^ I can say that I would relate to the character since it would be a 'movie' (how much depends on how good the movie is and how does it relate to story so far). But I don't know if I would relate more on the visceral side than to the mind: Force -> Hate, feeling to pummel the enemy. On the other one we have the 'Oh shit', danger, conflict, lets get out of here, etc While on the mind side we have an emphasis on the possible thoughts the character has, etc, as a movie you have all the time in the world to slow the time to make you think on the character thoughts, do closeups, etc. As for the stats you are proposing, yeah I think it would work as long as the player knows of their existence (he may or might not know the exact values). That would help forcing them to make a mental image of the character, just don't use these stats to tell what character is stronger or not and it should be fine (not based on level, and the max amount of points is the same for all players), otherwise they will be just another stat.
  10. Um definitely more than 10, but I don't have a good memory anyway. 1. Zombies Ate My Neighbors. My fav game, I should make clone of it someday. It gathered crowds behind whoever played it. Catchy music, pressure of the game + pressure of the crowd, that definitely added to the feel of the game (videogame clubs) 2. Goldeneye / Perfect Dark: Pdark's design was way better. 3. Pokemon / Pkmn Snap 4. Twisted Metal series: TMIII is the one I like most, I just found out that and TMIV are the ones most people hate =o 5. Castlevania SOTN 6. Starcraft 7. Diablo 2: And this is why I don't wanna try WOW, I'm not getting sucked into an Online RPG again. It's good to play an Online RPG to learn how game economics work and develop. 8. Age Of Empires II 9. C&C - Red Alert Retaliaton (PS1) 10. SMW2 - Yoshi's Island Others include Smash Brothers (N64), Zelda OOT, Duke Nukem 3D, Gran Turismo, Mario Party, Final Fight 2 (I think), Super Bomberman 3, Megaman X, Resident Evil (also gathered crowds, for hours) etc, etc, etc.
  11. Quote:Original post by Kazade I need to start allowing the positioning of entities (lights, enemies etc.) I want people to be able to specify their own entities, does anybody have any ideas on how i can do this? I want to avoid plugin architectures if possible, I dont have much experience in it and i dont have to much time for the project deadline is soon. Cheers Luke. You could let people define their own entities using 2 XML files, they would put them in the "Entities" folder, one of them would be their entity definition to use in their own games and the other a definition ("gui" folder?) that the map editor could use to show at the GUI (editing entity properties) <entity> <entity-name>Light</entity-name> <attributes> <attribute> <name>brightness</name> <type>float</type> <min-value>0.0</min-value> <max-value>1.0</max-value> <default-value>1.0</default-value> </attribute> (...) </attributes> </entity> <entity-gui> <entity-name>Light</entity-name> <editor-model>/models/light.ext</editor-model> <properties> <property> <label>Light Brightness</label> <editor-help>Sets the brightness of the light, possible values range from 0.0 (no light) to 1.0 (full-brightness)</editor-help> <input> <input-type>textbox</input-type> </input> </property> <property> <label>Light Something</label> <editor-help>Sets this something to something.</editor-help> <input> <input-type>combobox</input-type> <options> <option> <label>Team Alpha</label> <value>1</value> </option> <option> <label>Team Beta</label> <value>2</value> </option> </options> </input> </property> </properties> </entity-gui> That as example of both files, the XML would have to be generic so the entities could be anything but the editor still allowed people to edit theattributes of each entity they place. The entity editor-model would be the model to display in the camera view of the editor. It could be a sprite instead a model.
  12. I am checking my c++ book =P and tried to do some sort of graphical_apis wrapper class. If i put the real code it will be hard to understand so ill just write something easier: class Parent { public: virtual bool functionA() = 0; bool functionB(); }; class Child : public Parent { public: bool functionA(); double anotherFunction(); }; /* define the contents for each function (...) done */ int main() { Parent* instance = new Child(); instance->functionA(); //ok instance->functionB(); //ok instance->anotherFunction(); //error } i thought the pointer would let me use anotherFunction() but it seems i can only call functions that have been declared in the parent class. is it obligatory to use "Child* instance = new Child();" for it to work? (call the function declared in the child's body)
  13. Quote:Original post by l3mon Just for personal interest, can you state why you wouldn't? Well, the main reason: i think it would involve a lot of extra work than using VB, so id use VB, not PHP. The only reason i wouldnt use VB would be that the project was actually an "exercise" on my road to the "games industry" or whatever bigger project that wouldnt benefit from VB, in that case id use c/c++, not PHP. I imagine a simple Online TCG having... 1. Player Vs Player 2. Player Vs Computer 3. Chat PHP can handle the first two, it needs Java to get the third, it needs CSS to make it look good, it needs HTML as well (well not much of a problem once you learned them, but i think those are a lot of topics for a newbie) Anyway, if you add a Java chat... well, you should stop using PHP and do the whole thing with Java. The only good point i can see on using PHP or whatever to make the game web-based, is that users won't have to download any *.exe file, and that your game will be accessible from any browser. Quote:Original post by l3mon I don't see why crystal should start with C or C++ really!? I mean what's the point? Why learn all this stuff just to make his online card trading thing? If you have a worked out game, you should make fast progress otherwise you might drop it, and that's not good. So for this one, you should use the easiest tools (languages) to get the job done. I think that if your goal is "to program" and not something specific like "to program for databases" then you should start with c++. Once you learned the concepts you could go and change to another language if you wanted. Thats the way i think though, maybe because i started with c++ ^^ (i had some pascal before but not that much) What is crystal's goal, is it "to program"? or "to program games"? or "to program games up to some complexity limit"? or "to program that Online TCG and nothing else"? I wouldnt like wasting my time using VB to program the TCG if my goal was higher (um lets pretend, programming Doom X) and the TCG was actually a step to get closer to that goal. I think you should take the shortest way to complete your real goal without caring if it is the longest to complete a specific step or not.
  14. I use iostream.h, iota, atoi and the like =P Would you help me learn standard c please? Is there any ebook or a web page with a complete tutorial?, someting like Nehe's guide to OpenGl. A *.chm file like PHP's would be great ^^ Please post links to such places if any. Im asking for an ebook because i lack the money and credit card to buy the books from the books section =/ I also apologize for not using the search option in case this has been asked already.
  15. Best language to learn: c and c++. But maybe you dont have to learn it, everything depends on your long term goal. As recommendation, learn c/c++ first, no matter what. Up to classes/pointers would be enough. After that... If you like that language and/or your goal is "i want to get a job at the gaming industry" and/or "i want my games to be speedy, and i want to create more complex games than this one": Then you should continue learning c/c++ If your long-term goal is just to create that game and c/c++ is too confusing, then id suggest Visual Basic. You dont even need DirectX for a cards game... But you should still learn c first, at least the basics! I dont like Java, and despite i love PHP i wouldnt use it in this case. Use c, vb or one of those "game maker" programs.