khleug35

Members
  • Content Count

    111
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by khleug35


  1. Hello Everyone.

    My new HTML5 shoot em up game made using Panda2

    This game can play on mobile or desktop, but this game is no sound yet.

    Special thanks to @enpu, @Stephan and  @Wolfsbaneteaching me coding skill, really thanks

    This game can play on mobile or desktop

    Try the game in here , hope you enjoy:

    https://superfranco.itch.io/space-shooterjh

     

    Android Version:

    656596893_2019-01-069_31_40.png.6b7b1012a051b66c3fdb9c56934e173e.png

    Google Store Link

    ScreenShot:

    5.thumb.png.c4d80556f5d7994f808d9228228968db.png 4.thumb.png.5fe98a6298c29a2c49dd4d2f22cc2cbe.png 333.thumb.png.14383e63e8ba497c37fa1134cdb372db.png  433705133_7(1).thumb.png.ea07450c0f7d0b7fc76859a11ac45ab6.png

    How to Play?
    For desktop control
    W key - Up
    A key - Left
    D key - Right
    S key - Down
    P Key - Pause the Game

    Space - use subweapon

    For Mobile control

    You can control the ship movement with JoyStick
    Click or press the icon to use subweapon and Pause the game.
     

    You can destroy the enemy and get money to buy a new ship and upgrade them.

    Mega Bomb  - Mega Bombs damage and clears all forms of the enemy from the screen. When upgraded to level 3 or above,it can also clear enemy gunfire or bullet. 
    Laser - Laser allows you to deal massive damage onto your enemies.
    Energy Shield - Energy Shield can protect player, When upgraded, it improves the duration of the shield.

    Mobile version.
    Android 

    This is a classic vertically scrolling space shoot 'em up game.
    It has 9 levels with Easy and Hard unlocking regimen. The Hard mode can make double the amount of stars as your reward. 
    You can go to store to upgrade your ship and buy a new ship.

    How to play
    -Control the ship movement with JoyStick
    -Click the icon to use subweapon and Pause the game.

    Item-
    Coin - Dropped from enemies , you can take this to upgrade your ship and buy a new ship.
    Health - Heals 20% of your ship.
    Subweapon item - increase one Subweapon amount of use.

    SupWeapon
    Mega Bomb  - Mega Bombs damage and clears all forms of enemy from the screen. When upgraded to level 3 or above,it can also clears enemy gunfire or bullet. 
    Laser - Laser allows you to deal massive damage onto your enemies.
    Energy Shield - Energy Shield can protect player, When upgraded, it improves the duration of the shield.

    Ship upgrades are
    Attack -power of bullets from main cannon.
    Speed - speed of ship.
    Health - endurance of the ship.
    SupWeapon - increase your SupWeapon power or improves the duration of the shield.

    If you clear all the stage with Hard mode. You are successful to complete the game.

    Made With: https://www.panda2.io/


  2. How to check if the timer is paused??

    the following is my example code 

    game.createScene('Main', {
    
    init: function() {
    
    this.animation = game.Timer.add(100, function() {
              
        //dosomething
        
     }, true);
    
    this.animation.pause();
    
    },
    
    

     

    I try to using "this.animation.pasued", but not work

    update: function() {
    
    if(this.animation.pasued){  //check if the timer is paused, but not work
    
    this.animation.resume();
    
    }

     

    any idea??? Thank you very much. 
     

     


  3. Oh  dxmn !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  :ph34r:

    I missed Storage  Example  from https://www.panda2.io/examples#storage-get

    :(:(:(:(

    In Panda2,  in order to make save, I don't  need to use localStorage

    it just use game.storage , my problem can solved.

    here is some example for saving game data 

    game.config = {
        storage: {
            id: 'myGame'
        }
    };
    game.module(
        'game.main'
    )
    .body(function() {
    
    game.createScene('Main', {
        init: function() {
       if(game.storage.get('score') === undefined || game.storage.get('score') === null ){       
        this.number = 1; 
        game.storage.set('score', this.number);
        }else{ 
         this.number = game.storage.get('score');		
         }
         
        this.shownumber = new game.SystemText(this.number);
        this.shownumber.size = 36;
        this.shownumber.font = 'serif';
        this.shownumber.color = '#ff0000';
        this.shownumber.align = 'center';
        this.shownumber.x = game.width / 2;
        this.shownumber.addTo(this.stage);
         
        }
        ,
        mousedown: function() {
           this.number++;
           game.storage.set('score', this.number);
        },
        update: function() {
           this.shownumber.text = this.number;
            
        },
    });
    });
    

     @enpu    Thanks  :)

     


  4. @enpu  Thanks 

    The following is my Panda 2 log files error code

    [2019-02-16 17:59:23.389] [error] panda-toolkit error: /Users/admin/Desktop/Game/Burning/src/game/main.js:2
    if(localStorage.getItem("Upgrade") === undefined || localStorage.getItem("Upgrade") === null){
       ^
    
    ReferenceError: localStorage is not defined
        at Object.<anonymous> (/Users/admin/Desktop/Game/Burning/src/game/main.js:2:4)
        at Object.<anonymous> (/Users/admin/Desktop/Game/Burning/src/game/main.js:2757:3)
        at Module._compile (module.js:571:32)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:488:32)
        at tryModuleLoad (module.js:447:12)
        at Function.Module._load (module.js:439:3)
        at Module.require (module.js:498:17)
        at require (internal/module.js:20:19)
        at requireScriptTags (/Applications/Panda 2.app/Contents/Resources/app.asar/node_modules/panda-toolkit/build.js:82:13)
    
    [2019-02-16 17:59:23.404] [error] panda-toolkit exit: 1
    

    the log display that localStorage is not defined.

    I think that the localStorage can't put out of game .modules tab.

    but the game can play on the web, only not work in mobile

    Any good idea to create the save game function in the game and work on mobile?? Thank you very much


  5. Hello everyone:D ,  I would like to create save game function for my new game.

    so I using localStorage method, 

    the following is my code, I write the script out of game.modules tab.

    if(localStorage.getItem("SAVEGAME") === undefined || localStorage.getItem("SAVEGAME") === null){
    var savedata =0;
    localStorage.setItem("SAVEGAME", savedata);
    }else{
    localStorage.getItem("SAVEGAME")
    }
    
    game.module(
        'game.main'
    )
    .require(
        'game.player'
    )
    .body(function() {
    game.createScene('Main', {
        init: function() {        
            var text = new game.SystemText('Hello Panda');
            text.size = 36;
            text.addTo(this.stage);
        }
    });
    
    });


    The game is not an error.

    but I Export project to build apk.

    the editor display this message.

    aaa.png.c33e687ba0e73ca9043f6e19c7b4ba9f.png

     

    how to solve this problem?  thank you very much.;) thx

     

     


  6. About the joystick plugin problem.

    Is it possible to make the sprite rotation angle follow by joystick pad position??  

    if the joystick pad move to right-left, the sprite angle is  right-left

    like the following images

    1.png.1e93db439c8c5d0f9867bfba007d2c35.png  2.png.73f6eb75615834235d9ca64a5679f27c.png 3.png.884a9270921dda10630fd62492a278fa.png

     

    The following is my solution, but I think it is not the best way.

    I create the hidden object and the joystick can control the hide sprite movement.

    this.gun.rotation= this.gun.position.angle(game.scene.HiddenObject.point.position);  

    like the following image

    4.png.67cb0ab55cc53c883be77a1c36e2b059.png

     

     

    Hidden object class

     game.createClass('HiddenObject', {
        init: function() { 
       
            this.point = new game.Sprite('circle2.png')
            this.point.anchorCenter();
            this.point.alpha =0
            
            
            this.body = new game.Body();
            this.body.collisionGroup = game.Body.POINTER;
            this.body.collideAgainst= [game.Body.WALL];
            this.body.position.x = 500;
            this.body.position.y = 600;
         
            var shape = new game.Rectangle(this.point.width, this.point.height);
            this.body.addShape(shape);
            this.body.addTo(game.scene.world);
            this.body.collide = this.collide.bind(this);
            var ths = this;
            
            
        },
        
    
        collide: function(body) {
          if (body.collisionGroup === game.Body.WALL) {
          
               return true;
            }
          
      
            return true;
        },
        
        update: function() {
    
    
    	if(game.scene.joystick2.axis.x ==0 && game.scene.joystick2.axis.y ==0){
            this.body.velocity.x = 0;
            this.body.velocity.y = 0;
            }
    
    	  this.point.position.x = this.body.position.x;
          this.point.position.y = this.body.position.y;
     
        this.body.velocity.x += game.scene.joystick2.axis.x * 4800;
        this.body.velocity.y += game.scene.joystick2.axis.y * 4800;
          
          
        } 

     

    Rotation Sprite class

    game.createClass('rotationsprite', {
        init: function() { 
        this.gun = new game.Sprite('gun.png');
        this.gun.anchorCenter();
        this.gun.position.set(450, 550);
        this.gun.addTo(game.scene.container);   
         
    
        },
        
        update: function(){         
            this.gun.rotation= this.gun.position.angle(game.scene.HiddenObject.point.position);  
            }
         
        }
        
        
    });

     

    Any idea,? thank, I am sorry about my poor English.

     


  7. @Wolfsbane

    Thx for reply :)

    The reason for I doing each scene load. I hope I don't want to load all asset in the main scene(it will case initial load time quite slow)
    so I doing each scene load. I tested it, when the game load the assets for each one time.
    the second time very too fast, so I think when the system load the assets one time, It will not load the asset again every time.

     


  8. Hello:), @enpu

    I have received feedback, my new game in android app's load time slow and it can be improved.

    I take a video for reference. 

    https://www.youtube.com/watch?v=WWN6Zc5ceug

    for my phone

    0:00 - 0:02 The initial load time is taken 2sec.
    0:04 - 0:09 Stage Select load time is taken 5sec.
    0:10 - 0:12 Stage 1 load time is taken 2sec.
    2:56 - 2:58 Stage 2 load time is taken 2sec.
    5:12 - 5:14 Stage 3 load time is taken 2sec.
    8:20 - 8:23 Stage 4 load time is taken 3sec.
    12:27 - 12:29 Final Stage load time is taken 2sec.
    15:41 - 15:46 Final Stage  2 load time is taken 5sec.

     

    For me, I think that the load time is not very very slow, but is it possible to improve??? thank you very much

     


  9. About loading times 

    Maybe my code is not compiled well, which causes the loading speed to slow down. I hope anyone can give me an idea to solve the problem. Thanks

    For example, my game deadgun is 20Mb, My BGM file has 16Mb, so  the load time is too slow.

    In order to avoid initial load time quite slow.
    I create a Loading Scene for loading asset

    In Main Scene

    game.createScene('Title', {
        ....
    
        init: function() {
    
            this.choice1 = new game.Button('title/gamestart.png',551,480,function(){
            WhatSceneDoYouWantToLoad='StageSelect';
            game.system.loadScene('Loading');    
            });
       
            this.choice2 = new game.Button('title/password.png',836,480,function(){
            WhatSceneDoYouWantToLoad='PASSWORD';    
            game.system.loadScene('Loading');        
            });
            
            this.choice3 = new game.Button('title/bossfight.png',551,585,function(){
           WhatSceneDoYouWantToLoad='StageSelectBoss';    
            game.system.loadScene('Loading');       
            });
    
            this.choice4 = new game.Button('title/credits.png',836,585,function(){
            WhatSceneDoYouWantToLoad='Credits';      
            game.system.loadScene('Loading');  
            });
            }
        .... 

     

    In Loading Scene

    game.createScene('Loading', {
         backgroundColor: "#000000",
         init: function() {
            
     switch(WhatSceneDoYouWantToLoad){
      
         case 'StageSelect':
         game.addAsset('bgm/shoot1.wav');
         game.addAsset('bgm/shoot2.wav'); 
         game.addAsset('bgm/hurt.mp3');
         game.addAsset('bgm/jump.mp3'); 
         game.addAsset('bgm/get.mp3');
         game.addAsset('bgm/boss_dead.mp3');    
         game.addAsset('bgm/boom.mp3');      
         game.addAsset('bgm/boss.mp3');  
         game.addAsset('bgm/stageselect.mp3');
         break;
         case 'PASSWORD':
         game.addAsset('bgm/hurt.mp3');    
         break;
         case 'StageSelectBoss':
         game.addAsset('bgm/shoot1.wav');
         game.addAsset('bgm/shoot2.wav'); 
         game.addAsset('bgm/hurt.mp3');
         game.addAsset('bgm/jump.mp3'); 
         game.addAsset('bgm/get.mp3');
         game.addAsset('bgm/boss_dead.mp3');    
         game.addAsset('bgm/boom.mp3');      
         game.addAsset('bgm/boss.mp3');  
         game.addAsset('bgm/stageselect.mp3');      
         break;     
         case 'Credits':
         game.addAsset('bgm/shoot1.wav');
         game.addAsset('bgm/shoot2.wav'); 
         game.addAsset('bgm/hurt.mp3');
         game.addAsset('bgm/jump.mp3'); 
         game.addAsset('bgm/get.mp3');
         game.addAsset('bgm/boss_dead.mp3');    
         game.addAsset('bgm/boom.mp3');      
         game.addAsset('bgm/stageselect.mp3');
         game.addAsset('bgm/Ending.mp3');    
         break;
         //stage
         case 'Stage1':
         game.addAsset('bgm/stage1.mp3');      
         break;  
         case 'Stage2':
         game.addAsset('bgm/stage2.mp3');      
         break; 
         case 'Stage3':
         game.addAsset('bgm/stage3.mp3');      
         break; 
         case 'Stage4':
         game.addAsset('bgm/stage4.mp3');      
         break; 
         case 'Stage5':
         game.addAsset('bgm/stage5.mp3');      
         break;     
         case 'Stage5-4':
         game.addAsset('bgm/FinalStage.mp3');  
         game.addAsset('bgm/finalboss.ogg');    
         break; 
         case 'Stage5-5-Boss':
         game.addAsset('bgm/finalboss.ogg');    
         break;
         case 'Ending':
         game.addAsset('bgm/Ending.mp3');      
         break; 
      
    
        //Loading Bar
         this.bar = new game.Graphics();
            this.bar.fillColor = '#ffffff';
            this.bar.drawRect(300, game.height/2, 600, 40);
            this.bar.center(game.scene.stage);
            this.bar.addTo(game.scene.stage);
            this.bar.scale.x = 0;
            this.loader = new game.Loader();
            
              this.loadingtext = new game.SystemText("Loading...");
              this.loadingtext.size = 60;
              this.loadingtext.color = '#ffff68';
              this.loadingtext.position.set(490, 250);
              
    
               
            this.loader.onStart = function() {
                 game.scene.loadingtext.addTo(game.scene.stage); 
              }
            };
             
              
            this.loader.onProgress = function() {
                game.scene.bar.scale.x = game.scene.percent / 100;
            };
            this.loader.onComplete = function() {
             game.system.loadScene(WhatSceneDoYouWantToLoad);
            };
            this.loader.start();
     }       

    but load time seemed quite slow, anyone have good idea or right methed to asset loading?? Thank you very much.