SNACK HARRIER 2016 Gamejam @ TG16 Code and 3d assets by David "Moycakes" Gross 2d assets by Dylan 'Agushi' Huskey Sound track by kullingmusic To run, you'll probably want to visit the link, or host this yourself, as I am not sure if AJAX calls work for file:// based resources. http://88.92.42.149/wax/main.html (while at TG) http://moy.pink/space_harrier/main.html (after TG) To play: Navigate to the SNACK HARRIER folder, and run main.html in Firefox, or use a URL above in Chrome/Firefox Arrow keys Resources used: (google'd for, with free to use license selected.) https://pixabay.com/static/uploads/photo/2013/07/13/12/40/cheese-160099_960_720.png Software used: Notepad++ Blender3d GIMP DaeBreaker (inhouse, parses collada files and exports JSON objects, requires ASSIMP) WAX renderererer (inhouse, heavily WIP) ????: [3:04:33 PM] Moy: So the theme of the game contest here is "weightlessness" [3:04:46 PM] Moy: So I'm gonna do a game, where you play a spray can of cheese in space [3:04:50 PM] Moy: The space snack truck crashed [3:04:55 PM] Moy: So you need to feed the space tourists [3:05:13 PM] Moy: And to do that, you have to navigate the bunches of space snacks, and spray them spray cheese [3:05:20 PM] Moy: Also, spraying cheese is the only way you can move [3:05:33 PM] Moy: And there will be things like crackers, and fruit [3:05:48 PM] Moy: Cheese landing on fruit reduces score, and it landing on snacks gives you score TODO: Add collision between player and food stuffs. Polish everything up. Add some kind of level system thing. (Perhaps get X perfect meals triggers a change.) SNACK HARRIER 2016 Gamejam @ TG16 Code and 3d assets by David "Moycakes" Gross 2d assets by Dylan 'Agushi' Huskey Sound track by kullingmusic To run, you'll probably want to visit the link, or host this yourself, as I am not sure if AJAX calls work for file:// based resources. http://88.92.42.149/wax/main.html (while at TG) http://moy.pink/space_harrier/main.html (after TG) To play: Arrow keys Resources used: (google'd for, with free to use license selected.) https://pixabay.com/static/uploads/photo/2013/07/13/12/40/cheese-160099_960_720.png Software used: Notepad++ Blender3d GIMP DaeBreaker (inhouse, parses collada files and exports JSON objects, requires ASSIMP) WAX renderererer (inhouse, heavily WIP) ????: [3:04:33 PM] Moy: So the theme of the game contest here is "weightlessness" [3:04:46 PM] Moy: So I'm gonna do a game, where you play a spray can of cheese in space [3:04:50 PM] Moy: The space snack truck crashed [3:04:55 PM] Moy: So you need to feed the space tourists [3:05:13 PM] Moy: And to do that, you have to navigate the bunches of space snacks, and spray them spray cheese [3:05:20 PM] Moy: Also, spraying cheese is the only way you can move [3:05:33 PM] Moy: And there will be things like crackers, and fruit [3:05:48 PM] Moy: Cheese landing on fruit reduces score, and it landing on snacks gives you score TODO: Add collision between player and food stuffs. Polish everything up. Add some kind of level system thing. (Perhaps get X perfect meals triggers a change.)drawable.prototype.make_buffer_pnu = function(pos_, normals_, uvs_, indices_){ console.log("DEPRECATED"); return; if(!this.shader){ console.log("Trying to make a drawable with no shader."); return 0; } this.shader.bind(); this.clear(); this.type = DRAWABLE_PNU; this.tris = pos_.length / 3; this.numIndices = indices_.length; if((pos_.length / 3) != (normals_.length / 3) || (pos_.length / 3) != (uvs_.length / 2)){ console.log("Length of pos, normals, and UVs not equal."); return 0; // Mangled up data. } // I'm sure this could be optimized a bit more. As in using a single buffer for PNU data. I'll deal with it when I made a dae->JS-array converter. this.bufPos = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(pos_), gl.STATIC_DRAW); this.bufNorm = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNorm); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(normals_), gl.STATIC_DRAW); this.bufUv = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.bufUv); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(uvs_), gl.STATIC_DRAW); this.bufIndices = gl.createBuffer(); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.bufIndices); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices_), gl.STATIC_DRAW); this.ok = 1; /*console.log("pos", pos_); console.log("norm", normals_); console.log("uv", uvs_); console.log("indices", indices_);/**/ return 1; } if(this.shader.aPos != -1){ gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); gl.vertexAttribPointer(this.shader.aPos, 3, gl.FLOAT, false, 0, 0); }//else console.log("no aPos"); if(this.shader.aNorm != -1){ gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNorm); gl.vertexAttribPointer(this.shader.aNorm, 3, gl.FLOAT, false, 0, 0); }//else console.log("no aNorm"); if(this.shader.aUv != -1){ gl.bindBuffer(gl.ARRAY_BUFFER, this.bufUv); gl.vertexAttribPointer(this.shader.aUv, 2, gl.FLOAT, false, 0, 0); }//else console.log("no aUv"); if(this.shader.uDiff){ gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, tex.id); gl.uniform1i(this.shader.uDiff, 0);/**/ }