• Content Count

  • Joined

  • Last visited

About LudovicCluber

  • Rank

Profile Information

  • Gender
  • Location
  • Interests
    Programmer, composer, hobbyist game developer

Contact Methods

  • Twitter
  1. yep I need to optimize the code. I don't know where the problem is yet. It lags on some computers and doesn't on others...
  2. Thanks! I'm trying to find the sweet spot between an extremely accurate old school gameplay and a more modern feel with physics and inertia.
  3. Hello, Still in my quest to learn how to program video games, I released my first 3D demo ever. After developing several 2D games you can play here : I decided to develop a 3D engine from scratch using javascript and WebGL. Here is the demo : It's a shmup with few enemies and a boss to kill. I'm still working actively on the engine. The game itself is in a very early stage of development. Apparently there is a bug with controls on Safari. So please don't test it on Safari for now. Hope you enjoy Have fun!
  4. hi I'm not using any framework. I built my engine from scratch using javascript and HTML5 Canvas.
  5. Hello, Here is a javascript / HTML5 game I made with my cousin. We spent 1 week to make this prototype. Moles and Furious is a 2D javascript / html5 one button shooter. Kill the furious moles, survive as long as you can and try to rank up in the leaderboard. Use the spacebar, the mouse button or tap the screen to trigger your jet pack. The idea is to improve it and develop a mobile version one day. You can play here : works best on Chrome I guess. Follow my games updates on Twitter : @LCluber
  6. function Joystick(){ //This class simulates an analog joystick for touchscreen devices this.position=new vect(.0,.0); //position of the whole joystick this.stickPosition=new vect(.0,.0); //position of the stick vect(.0,.0); //vector from joystick to finger //stick contour this.size=new vect(imgJoystick.spriteSize.X*this.stickSize[OPTION.stickSize],imgJoystick.spriteSize.Y*this.stickSize[OPTION.stickSize]); this.halfSize=new vect(this.size.X>>1,this.size.Y>>1); this.squareRad=this.halfSize.X*this.halfSize.X; //compared with square magnitude of delta in setPosition() to determine what to do this.stickContour=new sprite(this.position,0,0,imgJoystick,this.size,this.halfSize,0); //stick this.sSize=new vect(imgJoystick2.spriteSize.X*this.stickSize[OPTION.stickSize],imgJoystick2.spriteSize.Y*this.stickSize[OPTION.stickSize]); this.sHalfSize=new vect(this.sSize.X>>1,this.sSize.Y>>1); this.stick=new sprite(this.stickPosition,0,0,imgJoystick2,this.sSize,this.sHalfSize,0);; this.margin=new Margin(-this.halfSize.X,-this.halfSize.Y);}Joystick.prototype={ draw:function(){ if(SCREEN.touched){ //draw joystick if TOUCH_PRESSED this.stickContour.draw(); this.stick.draw(); } }, setPosition:function(fingerPosition){ //TOUCH_MOVED this.computeDelta(fingerPosition); //compute the vector from finger to joystick var sMag =; //square magnitude of delta if(sMag >= this.squareRad){ //joystick moves if the finger is out of the joystick contour this.stickPosition.initV(fingerPosition); //stick moves under the finger; //delta is now a direction,2); //delta is now the stick position relative to the whole joystick this.position.initV(fingerPosition); //joystick contour moves under the finger this.position.subtract(; //joystick contour is moved in order to keep stick direction this.clamp();// the joystick contour can't go out of the screen }else //finger is inside the joystick contour. We move the stick only this.stickPosition.initV(fingerPosition); //stick is moved under the finger this.computeDirection(); //gives the stick direction to the space ship }, computeDelta:function(position){ //compute the vector from finger to joystick;; }, computeDirection:function(){ //sends the joystick direction to the space ship SHIP.direction.initV(; SHIP.direction.scale(1/this.halfSize.X,2); //normalize D }, clamp:function(){ //joystick contour can't go out of screen if(this.position.Y<; if(this.position.X>this.margin.right)this.position.X=this.margin.right; if(this.position.Y>this.margin.bottom)this.position.Y=this.margin.bottom; if(this.position.X<this.margin.left)this.position.X=this.margin.left; }, release:function(){ //TOUCH_RELEASED this.stickPosition.initV(this.position); SHIP.direction.init(.0,.0); }, init:function(fingerPosition){ //TOUCH_PRESSED this.position.initV(fingerPposition); this.stickPosition.initV(fingerPosition); this.clamp(); this.computeDelta(fingerPosition); this.computeDirection(); }};Here is the joystick class. Code is commented and simplified in order to keep the interesting things only. Could be improved but it's working fine as it is. Now you need to figure out how to detect touch events with javascript. I won't give the code here since you will find it easily on Google. If something is not clear enough just ask me.
  7. Hi there! Just wanted to show a touchscreen version of my first game here : I made a pretty simple Javascript virtual joystick for this. the joystick seems to work well on android, apple and Windows devices. Also works with a mouse. You can change the size of the joystick in the options to fit your screen size. I would be pleased to know if it works fine on your mobile devices. Please let me know if there are bugs. Or if you have interesting ideas to improve the controls.
  8. That's a great idea. Too bad I'm not in London this week.
  9. Before learning how to use any game engine I think it's priceless to start by doing your firsts tiny games from scratch with Javascript and Canvas. Especially if you work alone and plan to start with several small 2D games. Which is a very good idea anyway. I started like this and ended up with my own game engine. So if I had to chose, I would chose a low level engine. Going deep into the code to make things happen is good practice because every game engine has its limits and when you reach those limits you don't want to be stuck.
  10. Maybe it's time for me to dive into webGL. Thanks for this link. Seems to be a good starting point.
  11. Having multiple keys to do the same thing sounds pretty good. I'm gonna work on it. your link for the space bar problem seems broken. To save high scores I use the simple "enter your name" system in Vortal Combat. For Boba jet I wanted to do a comprehensive account system. Because the account saves your progress, high scores, controls, options and achievements. I also keep informations like the browser used and the average frame rate for each player. It's a lot of things to save. For now it's just a test to see how players react to this account system. I have not decided what's best for my next games yet. RoostRJS is far from beeing ready to be shown. The only almost user friendly thing for now is the level editor. For everything else there is no user interface yet. It's ok for me because I know my program. But I don't think anyone else could find this helpful. So for now the engine is just for me. It helps me to prototype games very quickly. I save a lot of time with it. I have a lot of work to do before I can eventually release it one day.
  12. I just released a new patch for the game following your feedbacks. The game is easier. - There is a little less enemies during the first part of the forest world. - Boba has 25% more life and his shield regenerates 20% faster. - Flying enemies shoot 15% slower.