Spoon Thumb

  • Content count

  • Joined

  • Last visited

Community Reputation

121 Neutral

About Spoon Thumb

  • Rank

Personal Information

  1. OUYA Devkit Giveaway Competition

    Voting is now open: http://ouyaforum.com/showthread.php?1417-Vote
  2. We're running a competition to give away an OUYA Devkit over at [url=http://ouyaforum.com/forumdisplay.php?24-OUYA-Euro-Devkit-Giveaway]ouyaforum.com[/url] The idea is to come up with a design for a game you or your team would like to make for the OUYA, and present that idea on the forums. The closing date for entries is Feb 14th, with a poll running on the forums until the 16th to decide the winner! There have been a number of entries so far, but still plenty of opportunity for someone with a really great design to enter and win! The [url=http://ouyaforum.com/showthread.php?1205-Rules]rules[/url] etc are all up on the forums, or you can ask questions here if you want. Also note that it's limited just to individuals or teams based in Europe (hence the Euro part)  
  3. OpenGL Lighting and glMultMatrixf problem

    Ah, thanks! could have sworn I'd already tried that...
  4. I've written a basic graphics engine for OpenGL-ES 1.1 in Java for Android. I use the following code to orientate the spaceships in my game to point in the direction of travel: [source lang="java"]gl.glPushMatrix(); transforms[i].transform(gl); gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, light0Position); model.drawVertexBufferObjects((GL11) gl); gl.glPopMatrix();[/source] [source lang="java"]public void transform(GL10 gl) { gl.glTranslatef(xyz[0], xyz[1], xyz[2]); // where xyz holds the coordinates of the spaceship gl.glScalef(scale,scale,scale); Orientate(gl); }[/source] [source lang="java"] private FloatBuffer startMatrixFB; protected void Orientate(GL10 gl){ if(startMatrixFB==null){ ByteBuffer byteBuffer = ByteBuffer.allocateDirect(16 * 4); byteBuffer.order(ByteOrder.nativeOrder()); startMatrixFB = byteBuffer.asFloatBuffer(); } startMatrixFB.position(0); startMatrixFB.put((float) -rightOrientationVector.mX); startMatrixFB.put((float) -rightOrientationVector.mY); startMatrixFB.put((float) -rightOrientationVector.mZ); startMatrixFB.put(0); startMatrixFB.put((float) upOrientationVector.mX); startMatrixFB.put((float) upOrientationVector.mY); startMatrixFB.put((float) upOrientationVector.mZ); startMatrixFB.put(0); startMatrixFB.put((float) directionVector.mX); startMatrixFB.put((float) directionVector.mY); startMatrixFB.put((float) directionVector.mZ); startMatrixFB.put(0); startMatrixFB.put(0); startMatrixFB.put(0); startMatrixFB.put(0); startMatrixFB.put(1); startMatrixFB.position(0); gl.glMultMatrixf(startMatrixFB); }[/source] The problem is that this doesn't affect the diffuse lighting. The lighting on the ship appears without taking into account the changes made by the Orientate() method. I.e. the light is always in the same place relative to the model: [attachment=10204:lighting_problem_iridian.png] If anyone can help me solve this, I'd be most appreciative Thanks James
  5. Write a story for this game concept

    I'm guessing competition wise, this is already over, but still fun to have a go. Incidentally, there is nothing scary in any of those reference photos for someone who lives in rural England. Atmospheric? Yes. Scary? About as intimidating as a Sunday morning walk in the countryside: [i]The cows, the same ones, every day. They mock me, ignoring my presence amongst them, until I shout myself hoarse. Only then do they deign to casually glance in my direction. The docile beasts somehow avoid my approaches, ducking and weaving into the mist that descends each time I get close. At the far edge of the field, the old brick factory. It reeks of ghosts, dusty and cavernous, stripped bare of man and machinery that once brought it to life. I long for the day when developers come from the city to turn the place into luxury flats and boutique shops. How they would stare at the sudden appearance of this ragged man, this waif, wandering their prime real estate. Oh how I wish! Wish to be awakened from my perpetual nightmare. It has been months since the days blended together and nights turned to fiction. Since that Sunday morning I set off from the car park off the A514, walking through the cloud drenched woods, never to find my way back. Not a single soul did I see on the roads that morning. Alone then, as I am now, I crave the company of another. Yet it is a force unnatural and monstrous that accompanies me. The factory's towering chimney looming above me, inescapable, forever visible in the background everywhere I go. It screams, howling despair, emitting a sound that rips my soul with dread, and fills my spine with a tingled chill of a threat. Nameless and invisible, it creeps ever closer with each chime of the tower. Soon it will be upon me, and then I shall know my torture here merely as a walk in the park for all the terrors that await[/i] Of course, whatever haunts the character in the above passage had better be a damn sight scarier than a regular old mutant or alien or somesuch. Equally, the player isn't going to have any guns or knives to destroy what preys in the plane of existence between the conscious and subconscious mind, so that somewhat throws out the usual bullet physics and weapons mechanics
  6. The role of story in games

    Homeworld is a good example of a game where you have the freedom to achieve your objectives in any multitude of ways, but still has a storyline that blows most narrative-style games out of the water (in its execution more than the actual story itself. It is well told). Sometimes I'm in the mood for a ripping good story, other times I just want to play in the sand. There are plenty of great sandbox games out there, and I simply don't accept that the emphasis on narrative for non-sandbox games is sucking oxygen away from innovation in the field of game mechanics. I hear what you're saying about games like Mass Effect, but you're essentially arguing for less depth and breadth of content, and for real fans of those universes, that is what allows them to get so completely involved and immersed in a game. Others just want to tick off their list in the same way they tick a book off their reading list. Well they can play Metro 2033 or portal and be done with it in under a weekend The real problem is that writing for video games is still in its infancy. I'm a member of a couple of forums for aspiring novel writers and the standard is just so [i]so[/i] much higher than anything I've seen in a video game to date.
  7. Localisation ballpark cost?

    Thanks all for the advice. Looks like I need to do some research into how easily we can support multiple languages and how much development time that will add to the project
  8. I really like the idea of localising my android game. It has no audio or video but does have a lot of words (say 5000). However, I have no experience of doing any localisation before. I want to get it done professionally and I also want to get local business partners involved to promote the game in various regions rather than just translate it, throw it out there and hope. However, before I start getting too excited, I'd be interested if anyone has some ballpark figures for the cost of the whole process?
  9. Approaching Music Rights Holders

    [quote]The song title belongs to the public domain and cannot be copyrighted - you can not be sued for using the title as your company name[/quote] This is what I heard from a number of places, but wasn't 100% sure I will check out PRS and if that fails, will give the rights holders a direct call as Tom suggests. Thanks for the help
  10. Going rate for artist(s)

    Think I'll go for AU$17.50. That's about what I got paid for my first job in Australia (cold-calling selling solar-panels. yuck!). Can always increase it. Thanks for all the help!
  11. Going rate for artist(s)

    [quote name='JDX_John' timestamp='1322173279' post='4887420'] You don't say where you live. Your profile says London, UK but are you both in the UK, or London? Even in England, rates vary a lot by locale. For freelance work, anything from £10/hr for a new grad would be fine... maybe up to double or treble depending how good they are, if they have to travel, etc. [/quote] Ah sorry. Yes, I'm in (east) London in the UK, but the artist is in Brisbane in Australia
  12. So, there is this song, by a moderately successful band. Say I liked it so much that I actually named my company after the song title and trademarked the name (in the UK). And say that at some point, I would like to actually use said song, probably as the backing track to a promotional video or use the first couple of bars as background music to the company logo displayed at the start of the game (like valve do with their logo when you load up half-life or whatever). However, I would much rather never use the song than have the publishers / rights holders of the song sue me and force me to change my name. Imagine also that the company is just me and has zero assets and zero activity until the first product is actually ready to be released How should I approach the rights holders of the music, if at all?
  13. Going rate for artist(s)

    I've been developing my game (for android) for about 6 months. I'm lucky enough to have an independent source of income and some savings and when I started, it was just me in my bedroom coding away. I found an artist through a mutual friend, who has been doing UI assets (buttons, icons etc) as well as some concept art At the time we first started working together, I estimated my project would be finished a lot sooner than it will be (it'll be finished when I decide it is suitably awesome ). Meantime, my artist has finished a game design course at college and is looking for employment. The fact that the game still isn't released somewhat lessens the whole "you can do it for free to improve your portfolio" argument and in any case, I feel it is only fair to pay her for what she's already done. The problem is neither of us have any idea what the going rate is for this kind of work. This is my first business and she's fresh out of uni I assume there would either be an hourly rate or a comission-type system which we can work backwards with to find out how much is owed? Things are also complicated by the fact we live in different countries on opposite sides of the planet Any help would be much appreciated in this area Thanks Edit: I just read the sticky FAQ for this forum and followed the link to the report on average pay for industry professionals. Working backwards, I figured average salary of $45,114 for entry level artist over a 48 week year working 8 hours a day for 5 days a week comes to $23.50 / hour?
  14. Problem with Ray Sphere Intersection Points

    Yes, maths is not my strongest point , and actually the algorithm worked fine once I changed the vector maths as you suggested
  15. I read [url="http://www.lighthouse3d.com/tutorials/maths/ray-sphere-intersection/"]this post[/url] and decided to implement the algorithm in java for my space-based android game: [code] public class PhysicsUtil{ public static Vector3d[] rayItersectSphere(Vector3d rayVector, Vector3d rayOrigin, Vector3d sphereCentre, double sphereRadius){ Vector3d a = new Vector3d(rayVector); // vector of ray Vector3d b = new Vector3d(); // vector from ray origin to sphere centre b.x = sphereCentre.x - rayOrigin.x; b.y = sphereCentre.y - rayOrigin.y; b.z = sphereCentre.z - rayOrigin.z; a.normalise(); b.normalise(); double dotProduct = PhysicsUtil.dotProduct(a, b); double T = Math.acos(dotProduct); // angle between vectors if(T>Math.PI/2 || T<-Math.PI/2){ // vector is in wrong direction return new Vector3d[]{}; } double B = PhysicsUtil.getDistance(sphereCentre, rayOrigin); // distance from ray origin to sphere centre double A = B * Math.cos(T); // distance from ray origin to closest point on ray to sphere centre double C = B * Math.sin(T); // shortest distance from sphere centre to ray if(C > sphereRadius){ // no intersections return new Vector3d[]{}; } else if(C == sphereRadius){ // 1 intersection // assuming a (ray vector) is normalised, multiply by A to get (relative) point a.x *= A; a.y *= A; a.z *= A; return new Vector3d[]{ new Vector3d(rayOrigin.x + a.x, rayOrigin.y + a.y, rayOrigin.z + a.z)}; } else { // 2 intersections double D = Math.sqrt(sphereRadius*sphereRadius - C*C); // distance between nearest point on ray to sphere centre and intersection of ray and sphere edge Vector3d aplus = new Vector3d(a); Vector3d aminus = new Vector3d(a); aplus.x *= (A+D); aplus.y *= (A+D); aplus.z *= (A+D); aminus.x *= (A-D); aminus.y *= (A-D); aminus.z *= (A-D); return new Vector3d[]{ new Vector3d(rayOrigin.x + aplus.x, rayOrigin.y + aplus.y, rayOrigin.z + aplus.z), new Vector3d(rayOrigin.x + aminus.x, rayOrigin.y + aminus.y, rayOrigin.z + aminus.z) }; } } public static double getDistance(Vector3d point1, Vector3d point2){ double diffX = point1.x - point2.x; double diffY = point1.y - point2.y; double diffZ = point1.z - point2.z; double hyp = Math.sqrt(diffX*diffX + diffY*diffY); return Math.sqrt(hyp*hyp + diffZ*diffZ); } public static double dotProduct(Vector3d vector, Vector3d vector2){ return vector.x*vector2.x + vector.y*vector2.y + vector.z*vector2.z; } } public class Vector3d { double x; double y; double z; public void normalise(){ double magnitude = Math.abs(x) + Math.abs(y) + Math.abs(z); x /= magnitude; y /= magnitude; z /= magnitude; } public double length(){ return x + y + z; } public static void normalise(Vector3d vector){ double magnitude = Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z); vector.x /= magnitude; vector.y /= magnitude; vector.z /= magnitude; } } [/code] [img]http://img7.imageshack.us/img7/7904/raysphereintersect.png[/img] I started out by testing it with a spaceship starting at 0,0,0 (the ray origin) and heading in direction (0,0,1) at speed 5 (making the ray vector (0,0,5)). With a spacestation at (100,0,100) (sphere centre), the sum of their bounding spheres (sphere radius) I set at 15. If the ray inersects the sphere, the ship is on a collision course with the station. I wanted also to get the coordinates of the point where the ship would hit the station However, the first call gives the angle between the two vectors as 60 degrees rather than the expected 45. The ship turns, over a number of ticks, and eventually settles on a direction/ray vector of (0.6, 0.0 ,0.4), the same as the vector from the ship to the station. Logically, I'd expect the angle between two identical vectors to be zero, but it isn't Anyway, not sure where I've gone wrong. Is it just the zero-case I'm using in my example or something more fundamental?