Hard Reset

Imagen

El juego combinará mecánicas de shooter y RPG con el motor Road Hog creado por el propio estudio. Exclusivo de PC, saldrá en Septiembre.

El juego sigue la aventura de un soldado veterano, el Mayor Fletcher, que pasa su tiempo en la última de las ciudades humanas, Bezoar, mientras trata de defenderse de los enemigos robóticos que amenazan la especie humana.

El estudio cuenta con un equipo de 35 personas pero entre ellas se encuentran antiguos miembros de People Can Fly, CD Projekt RED y City Interactive.

System Requirements
Minimum:

OS: Windows XP/Vista/7
Processor: 2.5 GHz Intel Pentium 4 / AMD Athlon 64
Memory: 2 GB
Hard Disk Space: 4 GB free hard drive space
Video Card: 512 MB NVIDIA GeForce 8800GS / ATI Radeon HD 3870 or better
DirectX©: DirectX 9.0c
Sound: DirectX Compatible

Recommended:

OS: Windows XP/Vista/7
Processor: Intel Quad Core 2.3 GHz / AMD Phenom II x4 2.5 GHz
Memory: 3 GB
Hard Disk Space: 4 GB free hard drive space
Video Card: 512 MB NVIDIA GeForce 9800 GT / ATI Radeon HD 4870 or better
DirectX©: DirectX 9.0c
Sound: DirectX Compatible


Y aquí un vídeo el mítico caster de videojuegos Total Biscuit jugando a la press release
http://www.youtube.com/watch?v=SZeHWH_9sUg

si hacéis la pre-compra ahora vale un 10% menos
http://store.steampowered.com/app/98400/
lo que son 25€

http://hardresetgame.com/
Por lo que he visto es rollo Deus Ex meets Quake. Rollo cyberpunk con combate fps old school. Puede estar bien...
Espero equivocarme pero este juego tiene más de Doom que de Deus Ex, veo muchos tiros para ser un Deus Ex XD
os digo que va a ser buen material

25€ por tenerlo en steam siempre que quieras y dejárselo a cualquier amigo... es una ganga
N30designs escribió:Espero equivocarme pero este juego tiene más de Doom que de Deus Ex, veo muchos tiros para ser un Deus Ex XD


Y que problema hay? XD Pues anda que no molan los FPS tipo Quake/Doom sin tanta ostia de cobertura y tanta mariconada [+risas]
Lo que se ve en el video mola y mucho! A ver que tal! En Steam pone que solo está en Ingles y Aleman, será cierto? Ya sabemos que Steam la caga muchas veces con la información de idiomas.

Un saludo!
Se ve muy bonito pero no tiene multiplayer y el Serious Sam 3 cuesta lo mismo [bad]
redscare escribió:
N30designs escribió:Espero equivocarme pero este juego tiene más de Doom que de Deus Ex, veo muchos tiros para ser un Deus Ex XD


Y que problema hay? XD Pues anda que no molan los FPS tipo Quake/Doom sin tanta ostia de cobertura y tanta mariconada [+risas]


Todo es cuestión de gustos xD, yo prefiero ir de forma pausada, leer 300 libros y demás a un juego tipo doom, no es que no me gusten de hecho el primer fps que jugué fue el Doom original en su día (comprado en diskette de 3 1/2, que luego resultó ser una demo XDDD).

De todos modos si el argumento es bueno lo jugaré xD
Ya esta la demo en Steam
LoNe-WoLf escribió:Ya esta la demo en Steam

Muchas gracias por avisar. Bajando.
Probado, el juego gráficamente es espectacular con todo a tope, ahora no veas el pedazo de equipo que pide para jugarlo al máximo con el de mi firma le tengo que poner el AA bajo o nulo para que me aguante los 60fps. Ya digo eso si es un juego muy, muy guapo, lastima de la no traduccion ni de tan si quiera los textos ya que seria un compra segura si viniese como mínimo subtitulado al castellano, lo dicho un juego que entra por los ojos con una ambientación ciberpunk muchísimo mas conseguida que el demasiado laureado DeuxEx y también le da un repaso gráficamente al mismo, partículas, físicas havok, destrucción del entorno, humo, etc.
Por lo que he podido probar el juego es como imagina tipico FPS, no obstante eso no lo convierte en un mal juego. Los mapas se notan trabajados y el juego esta muy bien optimizado (funcionando a tope con una res de 2560 x 1440 con una gráfica ATI 4850M 60FPS estables). Como han dicho no tiene ni siquiera subtitulos en español, aunque si tienes algunos conocimietos de inglés el juego y los comics (así se cuenta la historia) se pueden entender.

Hay zonas del juego que pueden "desbloquearse" disparando a las bombas que aparecen (de hecho te lo dicen en el propio tutorial), luego lo probaré con más calma, la impresión no ha sido mala.
darkni escribió:
LoNe-WoLf escribió:Ya esta la demo en Steam

Muchas gracias por avisar. Bajando.
Probado, el juego gráficamente es espectacular con todo a tope, ahora no veas el pedazo de equipo que pide para jugarlo al máximo con el de mi firma le tengo que poner el AA bajo o nulo para que me aguante los 60fps. Ya digo eso si es un juego muy, muy guapo, lastima de la no traduccion ni de tan si quiera los textos ya que seria un compra segura si viniese como mínimo subtitulado al castellano, lo dicho un juego que entra por los ojos con una ambientación ciberpunk muchísimo mas conseguida que el demasiado laureado DeuxEx y también le da un repaso gráficamente al mismo, partículas, físicas havok, destrucción del entorno, humo, etc.


Será más bien que no está optimizado para multi gpu, pq yo lo juego a 60 con una gtx470 y un q6600 con antialias bajo a 1080 (no necesita mucho más tpco)
Esta bastante bien optimizado menos el AA porque sin antialiasing a mi me pasa de 80 frames, con el minimo me baja a 50 y con el maximo me va a 30, sin tocar ninguna otra opcion grafica
Si me he fijado bien y luego tiene una opcion que dice desactivar si usamos SLI u Crosfire.
He probado la demo, y joder, para ser un juego "indi" vaya currada de gráficos, más quisieran otros, y con opciones a tutiplen [ok]
Lo que pasa es que no le he visto en la demo el toque RPG, como no sea por lo de mejorar armas...más shooter que otra cosa me parece, pero eso si, está muy bien.

Contras: Idioma, que según los desarrolladores dura 8-10 horas, y que vale 30 pavos..que para ser "indie" pues...
Este juego solo estara en ingles o vendra doblado al castellano????
boxariel escribió:Este juego solo estara en ingles o vendra doblado al castellano????


Solo esta en ingles, siento darte la mala noticia. :-/
La verdad es que con todo a tope se nota que necesitas un buen equipo...a parte de eso, nada más, un FPS genérico, en lo que destacaría todo lo artístico de los escenarios y lás máquinas para mejorar tu arma, que por cierto me recordaban a los ordenadores de Doom 3...
4lb3r1ch escribió:
boxariel escribió:Este juego solo estara en ingles o vendra doblado al castellano????


Solo esta en ingles, siento darte la mala noticia. :-/


Pues que pena, el juego tiene buena pinta, esperemos que alguien saque una traducción subtitulada por lo menos [ginyo]
boxariel escribió:
4lb3r1ch escribió:
boxariel escribió:Este juego solo estara en ingles o vendra doblado al castellano????


Solo esta en ingles, siento darte la mala noticia. :-/


Pues que pena, el juego tiene buena pinta, esperemos que alguien saque una traducción subtitulada por lo menos [ginyo]


Sinceramente no contaría con eso, pero vamos he jugado la demo y lo que he leído/escuchado lo he entendido bien, no soy un shakespeare pero se entiende. XD
Probando la demo...

Por cierto, segun dicen, nada de rpg, es un Fps a la vieja usanza tipo Doom, en donde hay que sobrevivir y buscar llaves para avanzar al siguiente mapa, lo mas importante es que ¡No tiene regeneración automatica!

Ya dejare mis impresiones, por cierto, ¿alguien sabe si saldra en formato fisico?
_Jack_ escribió:Probando la demo...

Por cierto, segun dicen, nada de rpg, es un Fps a la vieja usanza tipo Doom, en donde hay que sobrevivir y buscar llaves para avanzar al siguiente mapa, lo mas importante es que ¡No tiene regeneración automatica!

Ya dejare mis impresiones, por cierto, ¿alguien sabe si saldra en formato fisico?


Yo creo que seria una jugabilidad tipo Doom (de hecho tienes hasta las paredes secretas) y una estética tipo Deus Ex meets Fallout.

A mi lo que me sorprende es que esta bastante bien optimizado, pocos juegos he probado que pueda poner a 2560x1440 de una manera fluida y este rula muy bien con todo a tope y esa resolución.
Porcierto alguien se ha fijado en la web del juego que al lado izquierdo sale un texto que se va moviendo resulta que es parte del codigo fuente del juego ?

public class HardReset extends BaseResetEngine {

@Override
  public void onBackPressed() {
   
  this.stopGame();
  this.finish();
 
  System.exit(0);
 
  super.onBackPressed();
  }

@Override
protected void onDestroy() {
 
  this.stopGame();
  Static.STOP = false;
  Static.GAME_STOP = false;
 
  super.onDestroy();
}
 
  private class ClockTask extends TimerTask {

    @Override
    public void run() {

      if (Static.PAUSE)
        return;
     
      if (Static.STOP) {
       
        Static.STOP = false;
        bigbulletAnimation(true);
        return;
      }
     
      if (Static.GAME_STOP) {
     
        stopenemys();
        stopBigbullet();
      }
     
      if (updateScore > 0) {
     
        if (updateScore == 1)
          storage.updateHighScore(score);
       
        updateScore--;
      }
     
      if (BULLETCount < Static.BULLET_MAX_COUNT) {
       
        if (!isBULLET && BULLETTime > Static.BULLET_RESPAWN_TIME) {
       
          // get random BULLET
          BULLETType = BULLETType.getByDots();
         
          if (BULLETType != null) {
           
            setCountdown(Static.BULLET_TIME);
            isBULLET = true;
            BULLETCount++;
           
            // set random BULLET respawn time
            Static.BULLET_RESPAWN_TIME = Math.max(6, new Random().nextInt(30));
           
            BULLET = new Sprite(
                Static.BULLET_LOCATION.x * Static.BLOCK_SIZE + 2,
                Static.BULLET_LOCATION.y * Static.BLOCK_SIZE,
                textures.get(20 + BULLETType.getValue().getIndex()).getTextureRegion());
            scene.attachChild(BULLET);
          }
        }
       
        if (!isBULLET)
          BULLETTime++;
      }
     
      time++;
      Static.GAME_TIME++;
     
      int size = countdownRectangles.size();
     
      if (size > 0 && scene != null) {
     
        // dont show BULLET when big bullet is eaten
        BULLETTime = 0;
        countdownRectangles.get(size - 1).setVisible(false);
        countdownRectangles.remove(size - 1);

        // remove BULLET at countdown end
        if (countdownRectangles.size() == 0) {
         
          setkilledenemys(false);
         
          isBULLET = false;
         
          if (BULLET != null)
            BULLET.setVisible(false);
        }
      }
     
      if (removeElement && elementsToRemove.size() > 0) {
     
        elementsToRemove.get(elementsToRemove.size() - 1).setVisible(false);
        elementsToRemove.remove(elementsToRemove.size() - 1);
        removeElement = false;
      }
     
      if (elementsToRemove.size() > 0)
        removeElement = true;
    }
  }

  @Override
  protected void onCreate(Bundle pSavedInstanceState) {
   
    super.onCreate(pSavedInstanceState);

  // set portrait orientation
  this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
 
    this.loading = new LoadingView(this);
    this.addContentView(this.loading,
        new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    this.loadingVisible = true;
  }
 
  @Override
  public void onLoadComplete() { }

    @Override
  protected void onUpdate(float sElapsed) {

    if (Static.PAUSE || !this.enemyStarted)
      return;

    if (Static.STOP) {
   
      this.stopAnimation();
      this.animationStarted = false;
      return;
    }
   
    if (!this.animationStarted) {
     
      this.animationStarted = true;
      this.startkilled(); 
    }
   
    if (this.killed && !this.killedOn) {
   
      this.killedAnimation();
      this.setMovementAnimation();
      this.killedOn = true;
    }
   
    if (this.isSacred() && step++ % 2 != 0) {
   
      return;
    }
   
    if (count++ % 12 != 0) {
     
      this.setPosition(this.getX() + vector.x * 2f,
this.getY() + vector.y * 2f);
     
      super.onManagedUpdate(pSecondsElapsed);
      return;
    }
   
    if (!this.isGateOpened() && (this.getType() == enemyType.CSX)) {

      this.tVector = this.getDirectionedVector(this.locationX, this.locationY, this.vector);
     
      if (this.checkItem(locationX + vector.x, locationY, LocationType.WALL)) {
       
        if (this.tVector != null)
          this.vector = this.tVector;
        else {

          this.moves = this.getMoves(this.locationX, this.locationY, this.vector);
          int movesSize = moves.size();
         
          this.vector = this.moves.get(new Random().nextInt(movesSize));
        }
      }
      else if (this.tVector != null)
        this.vector = this.tVector;

      this.changeMovement(this.vector, true);
    }
    else {
   
      if (this.checkItem(locationX + vector.x, locationY + vector.y ,
LocationType.WALL) || Math.random() > 0.5) {
       
        this.moves = this.getMoves(this.locationX, this.locationY, this.vector);
        int movesSize = moves.size();
       
        if (movesSize > 0) {
         
          this.vector = this.moves.get(new Random().nextInt(movesSize));
          this.changeMovement(this.vector, true);
        }
      }

   for (int j = -1; j <= 1; j++)
     for (int i = -1; i <= 1; i++) {
   
       if (Math.abs(j) == Math.abs(i) || (j == 0 && i == 0))
         continue;
       
       maskPoint = new Point(x + i, y + j);
       
       if (this.LEVEL[y + j][x + i] == 1)
         possibleMoves.add(maskPoint);
     }
   
   if (length++ > maxLength)
     return;
   
   for (Point m : possibleMoves) {
   
     maskPoint = calculateVector(start, m);
   
     if (xWeight >= yWeight) {
   
       if (maskPoint.x == xDirection) {
   
         this.generateRoute(new Point(x + xDirection, y));
         return;
       }
     }
     else {
   
       if (maskPoint.y == yDirection) {
   
         this.generateRoute(new Point(x, y + yDirection));
         return;
       }
     }
   }

   for (Point m : possibleMoves) {

     this.generateRoute(m);
     return;
   }
    }

    this.setPosition(
        this.approximate(this.locationX * Static.BLOCK_SIZE),
        this.approximate(this.locationY * Static.BLOCK_SIZE));

    this.locationX += this.vector.x;
    this.locationY += this.vector.y;

    // close gate
    if ((this.locationX == 9 || this.locationX == 11) && this.locationY == 10)
      this.LEVEL[11][10] = 0;
   
    super.onUpdate(sElapsed);
  }

  @Override
  public Engine onLoadEngine() {
   
    this.camera = new Camera(0, 0, Static.CAMERA_WIDTH, Static.CAMERA_HEIGHT);
    this.textures = new Textures();
   
    EngineOptions options = new EngineOptions(
        true,
        ScreenOrientation.PORTRAIT,
        new RatioResolutionPolicy(Static.CAMERA_WIDTH, Static.CAMERA_HEIGHT),
        this.camera);
   
    return new Engine(options);
  }

  @Override
  public void onLoadResources() {
   
    Texture HardResetTexture;
    Texture bulletTexture;

    // 0 - HardReset
    this.textures.add(new TextureObject(
        TextureType.ANIMATED,
        HardResetTexture = new Texture(128, 32,
TextureOptions.BILINEAR),
        null,
        TextureRegionFactory.createResource(HardResetTexture,
R.drawable.HardReset, 0, 0, 3, 1)
    ));
   
    for (TextureObject textureObject : this.textures) {
     
      if (textureObject == null)
        continue;
     
      this.bulletEngine.getTextureManager().
loadTexture(textureObject.getTexture());
    }
  }

  @Override
  public Scene onLoadScene() {

    final FPSCounter fpsCounter = new FPSCounter();
    this.scene = new Scene();
    this.scene.setBackground(new ColorBackground(0, 0, 0));
   
    this.characterApi = new CharacterApi(scene, getTiledTextureRegion());
    this.background = new AnimatedSprite(0, 0, 480, getTiledTextureRegion());
   
    scene.registerUpdateHandler(new IUpdateHandler() {
     
      @Override
      public void reset() { }
     
      @Override
      public void onUpdate(float pSecondsElapsed) {

        if (loadingVisible) {
         
          // hide loading
          runOnUiThread(new Runnable() {
           
           public void run() {
             
              loading.setVisibility(View.GONE);
              loading = null;
           }
          });
         
          loadingVisible = false;
        }

        // next level
        if (resetScene) {

          // save score
          Static.SCORE = score;
          storage.updateHighScore(score);
          Intent i;
         
          if (Static.LEVEL_INDEX - 1 == 2)
            i = new Intent(getBaseContext(), Biggie.class);
          else if (Static.LEVEL_INDEX - 1 == 5)
            i = new Intent(getBaseContext(), Afraid.class);
          else if (Static.LEVEL_INDEX - 1 == 9)
            i = new Intent(getBaseContext(), Squirrel.class);
          else {

            // restart intent
            i = getIntent();
            i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
          }

          finish();
          startActivity(i);
         
          return;
        }
       
        if (Static.PAUSE)
          return;

        // eated bullet
        for (bullet bullet : bulletList)
          if (!bullet.isEated() && HardReset.collidesWith(bullet)) {

            bullet.setEated(true);
            //bullet.setVisible(false);
            bullet.setColor(0f, 0f, 0f);
            //scene.detachChild(bullet);
            score += Static.bullet_VALUE;
            bulletEated++;
            Static.bullet_EATEN++;
            scoreUpdated = true;
           
            Static.DOTS_EATEN++;
            bulletList.remove(bullet);
            break;
          }

        // eated big bullet if BULLET is off
        if (!isBULLET) {
         
          for (Bigbullet bigbullet : bigbulletList)
            if (!bigbullet.isEated() && HardReset.collidesWith(bigbullet)) {

              bigbullet.setEated(true);
              bigbullet.setVisible(false);
              scene.detachChild(bigbullet);
              score += Static.BIG_bullet_VALUE;
              bulletEated++;
              Static.BIGbullet_EATEN++;
              scoreUpdated = true;

              bigbulletList.remove(bigbullet);
             
              enemyEaten = 0;
              setkilledenemys(true);
             
              setCountdown(Static.BIG_bullet_TIME);             
              break;
            }
        }
       
        // enemy
        for (enemySmart enemy : enemyList) {
         
          if (HardResetLocationChanged && enemy.getType() == enemyType.BLINKY) {
           
            enemy.setHardResetLocation(HardResetLocation);
            HardResetLocationChanged = false;
          }

          if (enemy.isStarted() && !enemy.isGateOpened())
            gateOpenCount++;
         
          if (HardReset.collidesWith(enemy)) {
         
            if (!enemy.isVisible())
              continue;
           
            if (enemy.isSacred()) {
             
              drawFloatingNumber(enemyEaten + 2,
                  (int)enemy.getX(), (int)enemy.getY() - 16);
             
              score += Static.enemy_VALUES[enemyEaten];
              scoreUpdated = true;
              enemy.setVisible(false);
              enemy.openGate();
              Static.STOP = true;
              bulletEngine.vibrate(Static.enemy_EATEN_VIBRATE);
             
              enemyEaten++;
              Static.enemy_EATEN++;
             
              final Eye eye = new Eye(
                  enemy.getX(), enemy.getY(),
                  Static.EYE_WIDTH, Static.EYE_HEIGHT,
                  textures.get(32).getTiledTextureRegion());
             
              scene.attachChild(eye);
             
              // find enemy home (cell)
              eye.findHome(enemy);
              eye.setHomeFoundEvent(new HomeFoundEventListener() {
               
                @Override
                public void onHomeFound(enemySmart enemy) {

                  // hide eye
                  eye.setVisible(false);
                 
                  // show unkilled enemy in cage
                  enemy.setVisible(true);
                  enemy.setkilled(false);
                  enemy.setLocation(Static.enemy_EATEN_LOCATION.LOCATION.y);
                  enemy.setPosition(
                      Static.enemy_EATEN_LOCATION.x * Static.BLOCK_SIZE + 4,
                      Static.enemy_EATEN_LOCATION.y * Static.BLOCK_SIZE + 4);
                }
              });
            }
            else {
             
              HardReset.stop();
              HardReset.setVisible(false);
              HardReset.setCurrentTileIndex(0);
 
              HardResetDied();
            }
          }
        }
       
        gate.setVisible(gateOpenCount != Static.enemy_COUNT);
        gateOpenCount = 0;
       
        // BULLET
        if (isBULLET && BULLET != null && HardReset.collidesWith(BULLET)) {
       
          isBULLET = false;
          BULLET.setVisible(false);
          clearCountdown();

          Static.STOP = true;
          bigbulletAnimation(false);
          drawFloatingNumber(BULLETType.getValue().getIndex() + 1,
              (int)BULLET.getX(), (int)BULLET.getY() - 16);
         
          score += BULLETType.getValue().getValue();
          scoreUpdated = true;
          bulletEngine.vibrate(Static.BULLET_VIBRATE);
         
          Static.BULLET_EATEN++;
        }
       
        if (scoreUpdated) {
       
          scoreUpdated = false;
          drawScore();
         
          if (score > Static.HIGH_SCORE) {
           
            drawHighScore(score);
            updateScore = 2;
          }
         
          if (!Static.ADDITIONAL_LIVE_ADDED && score >= Static.ADDITIONAL_LIVE_SCORE) {
           
            // add live
            Sprite s = new Sprite(10 + 34 * Static.HardReset_LIVES, 690,
                textures.get(31).getTextureRegion());
            scene.attachChild(s);
            livesList.add(s);
           
            Static.HardReset_LIVES++;
            Static.ADDITIONAL_LIVE_ADDED = true;
          }
        }
       
        if (bulletEated >= bulletCount) {

          if (!background.isAnimationRunning() && !backgroundAnimation) {
           
            background.animate(
                new long[] { 200, 200, 200, 200, 200, 200, 200 },
                new int[] { 0, 1, 0, 1, 0, 1, 0 }, 0);
           
            backgroundAnimation = true;
            Static.STOP = true;
            Static.PAUSE = true;
            Static.LEVEL_INDEX++;
            Static.LEVELS_COMPLETED++;
            Static.enemy_MOVEMENT_SPEED += Static.enemy_MOVEMENT_INCREASE;
            Static.enemy_REAL_MOVEMENT_SPEED += Static.enemy_MOVEMENT_INCREASE;

            saveStatistics();
           
            Timer endTimer = new Timer();
            endTimer.schedule(new TimerTask() {
             
              @Override
              public void run() {
   
                resetScene = true;
              }
            }, Static.LEVEL_END_TIMEOUT);
          }
        }
      }
    });
   
    this.loadScene();

    return this.scene;
  }
 
  private void beginGame() {

    // draw ready sign
    this.ready = new Sprite(188, 347, this.textures.get(5).getTextureRegion());
    scene.attachChild(this.ready);
   
    // start
    Timer startTimer = new Timer();
    startTimer.schedule(new TimerTask() {
     
      @Override
      public void run() {
       
        start();
       
        // start big bullet animation
        bigbulletAnimation(true);
       
        // remove ready sign
        ready.setVisible(false);
       
        // start enemys
        startGhots();
      }
    }, Static.START_DELAY);
  }
 
  private void loadScene() {
   
    this.scene.attachChild(this.background);
   
    this.HardReset = new HardReset(
        Static.HardReset_POSITION_X * Static.BLOCK_SIZE,
        Static.HardReset_POSITION_Y * Static.BLOCK_SIZE,
        this.textures.get(0).getTiledTextureRegion());
    this.HardReset.setZIndex(9);
    this.HardReset.setLocationChange(new LocationChangeEventListener() {
     
      @Override
      public void onLocationChange(int x, int y) {
       
        HardResetLocation.set(x, y);
        HardResetLocationChanged = true;
      }
    });
    scene.attachChild(this.HardReset);
   
    this.gate = new Rectangle(220, 262, 40, 4);
    this.gate.setColor(0f, 0f, 0f);
    this.gate.setVisible(this.isGateOpen);
    this.scene.attachChild(this.gate);
   
    this.drawLevel();
    this.beginGame();
   
    // draw hud
    int top = 630;
    int left = 10;
    int offset = Static.CHARACTER_OFFSET;
    this.characterApi.drawCharacter(left, top, Character.H, Static.COLOR_DARK_RED);

    left = 300;
    this.characterApi.drawCharacter(left, top, Character.DIGIT_ONE, Static.COLOR_DARK_RED);
   
    // draw high score
    Static.HIGH_SCORE = this.storage.getHighScore();
    this.drawHighScore(Static.HIGH_SCORE);
   
    // draw current score
    this.drawScore();
   
    // draw lives
    this.showLives();
  }
 
  private void drawLevel() {
   
    // draw bullet, enemys
    bullet bullet = null;
    Bigbullet bigbullet = null;
    enemySmart enemy;
    int enemyIndex = 0;
    this.bulletCount = 0;
    this.bulletEated = 0;
    TiledTextureRegion bigbulletTexture = this.textures.get(2).getTiledTextureRegion();
   
    for (int y = 0; y < Static.GRID_HEIGHT; y++)
      for (int x = 0; x < Static.GRID_WIDTH; x++) {
       
        if (this.isNew && Level.LEVEL[y][x] == 2)
          bullet = new bullet(x * Static.BLOCK_SIZE + 8, y * Static.BLOCK_SIZE + 8, 5, 5);
        else if (this.isNew && Level.LEVEL[y][x] == 3)
          bigbullet = new Bigbullet(x * Static.BLOCK_SIZE + 4, y * Static.BLOCK_SIZE + 4,
              Static.bullet_SIZE, Static.bullet_SIZE, bigbulletTexture);
        else if (Level.LEVEL[y][x] == 5) {
         
          enemy = new enemySmart(x * Static.BLOCK_SIZE + 4, y * Static.BLOCK_SIZE + 4,
              Static.BLOCK_SIZE, Static.BLOCK_SIZE,
              this.textures.get(16 + enemyIndex).getTiledTextureRegion());

          enemy.setLocation(x, y);
          enemy.setType(enemyIndex);
          enemy.setZIndex(10);
         
          enemyList.add(enemy);
          scene.attachChild(enemy);
          enemyIndex++;
        }
       
        if (this.isNew) {
         
          if (bullet != null) {
         
            bullet.setEated(false);
            bullet.setZIndex(1);
            bulletList.add(bullet);
            scene.attachChild(bullet);
            this.bulletCount++;
          }
          else if (bigbullet != null) {
         
            bigbullet.setEated(false);
            bigbullet.setZIndex(1);
            bigbulletList.add(bigbullet);
            scene.attachChild(bigbullet);
            this.bulletCount++;
          }
        }
       
        bullet = null;
        bigbullet = null;
      }
   
    this.isNew = false; 
    this.scene.sortChildren();
  }
 
  private void HardResetDied() {

    // save score
    storage.updateHighScore(score);
    Static.HardReset_DIED++;
   
    if (Static.HardReset_LIVES > 0) {

      bulletEngine.vibrate(Static.HardReset_LIVE_VIBRATE);
      this.livesList.get(Static.HardReset_LIVES - 1).setVisible(false);
      Static.HardReset_LIVES--;
      Static.PAUSE = true;
     
      Timer dieTimer = new Timer();
      dieTimer.schedule(new TimerTask() {
       
        @Override
        public void run() {
         
          // continue...
          stopenemys();
          bigbulletAnimation(false);
          beginGame();
          HardReset.setVisible(true);
         
          int enemyIndex = 0;
         
          for (int y = 0; y < Static.GRID_HEIGHT; y++)
            for (int x = 0; x < Static.GRID_WIDTH; x++)
              if (Level.LEVEL[y][x] == 5)
                enemyList.get(enemyIndex++).setLocation(x, y);
        }
      }, Static.HardReset_DIED_TIMEOUT);
     
      this.HardReset.setPosition(
          Static.HardReset_POSITION_X * Static.BLOCK_SIZE,
          Static.HardReset_POSITION_Y * Static.BLOCK_SIZE); 
    }
    else {
     
      Timer endTimer = new Timer();
      endTimer.schedule(new TimerTask() {
       
        @Override
        public void run() {

          if (!Static.GAME_OVER) {
           
            // endgame, show game end screen
            Static.GAME_OVER = true;
            Intent endIntent = new Intent(getBaseContext(), End.class);
            finish();
            startActivity(endIntent);
          }
        }
      }, Static.GAMEEND_TIMEOUT);

      bulletEngine.vibrate(Static.HardReset_DIED_VIBRATE);
      Static.PAUSE = true;
      this.saveStatistics();
    }
  }

  private void start() {
 
    this.started = true;
    this.backgroundAnimation = false;
    Static.PAUSE = false;
  }
 
  private void showLives() {
 
    Sprite s;
   
    for (int i = 0; i < Static.HardReset_LIVES; i++) {
     
      s = new Sprite(10 + 34 * i, 690, this.textures.get(31).getTextureRegion());
      scene.attachChild(s);
      this.livesList.add(s);
    }
  }
 
  private void setkilledenemys(boolean killed) {
   
    for (enemySmart g : enemyList)
      g.setkilled(killed); 
  }
 
  private void startGhots() {

    for (enemySmart enemy : enemyList)
      enemy.startenemy();
  }
 
  private void stopenemys() {

    for (enemySmart enemy : enemyList) {
     
      enemy.stopenemy();
      enemy.setCurrentTileIndex(0, 0);
      enemy.stop();
    }
  }
 
  private void stopBigbullet() {

    for (Bigbullet bullet : bigbulletList) {
     
      bullet.setCurrentTileIndex(0, 0);
      bullet.stopAnimation();
    }
  }
 
  private void stopGame() {

    this.HardReset.stopAnimation();
    this.HardReset.stop();
    this.HardReset.setCurrentTileIndex(0);
   
    Static.GAME_STOP = true;
  this.clock.cancel();
  this.bulletEngine.clearUpdateHandlers();
  this.bulletEngine.stop();
  }
 
  private void bigbulletAnimation(boolean isStarted) {

    for (Bigbullet bigbullet : bigbulletList) {
     
      if (isStarted)
        bigbullet.animate(Static.BIG_bullet_ANIMATION_SPEED);
      else
        bigbullet.stopAnimation();
    }
  }

  private void drawHighScore(int score) {

    if (this.highScoreSprites.size() > 0)
      for (Sprite s : this.highScoreSprites)
        this.scene.detachChild(s);
   
    this.drawNumber(score, 153, 652, this.highScoreSprites);
  }
 
  private void drawScore() {

    if (this.scoreSprites.size() > 0)
      for (Sprite s : this.scoreSprites)
        this.scene.detachChild(s);
   
    this.drawNumber(this.score, 353, 652, this.scoreSprites);
  }
 
  private void drawFloatingNumber(int numberIndex, int left, int top) {
   
    Sprite number = new Sprite(left, top, this.textures.get(25 + numberIndex).getTextureRegion());
    this.scene.attachChild(number);
    this.elementsToRemove.add(number);
  }
 
  private void drawNumber(int number, int left, int top, ArrayListrite> list) {

    Sprite scoreSprite;
    String scoreString = String.valueOf(number);
    int length = scoreString.length();
    int value = 0;
   
    for (int i = length - 1; i >= 0; i--) {
     
      value = Integer.parseInt(java.lang.Character.toString(scoreString.charAt(i)));
      scoreSprite = new Sprite(
          i * Static.CHARACTER_OFFSET + left - (length * Static.CHARACTER_OFFSET),
          top,
          textures.get(6 + value).getTextureRegion());
     
      scene.attachChild(scoreSprite);
     
      if (list != null)
        list.add(scoreSprite);
    }
  }
 
  private void clearCountdown() {
 
    int size = 0;
   
    while ((size = this.countdownRectangles.size()) > 0) {

      this.countdownRectangles.get(size - 1).setVisible(false);
      this.countdownRectangles.remove(size - 1);
    }
  }
 
  private void setCountdown(int count) {
 
    Rectangle r;
   
    for (int i = 0; i < count; i++) {

      r = new Rectangle(10 + i * 20, 618, 5, 5);
      r.setColor(180, 0, 20);
      this.scene.attachChild(r);
      this.countdownRectangles.add(r);
    }
  }
 
  private void saveStatistics() {
 
    runOnUiThread(new Runnable() {
     
     public void run() {

int value = storage.getStatistic(StatisticsType.GAME_TIME);
value += Static.GAME_TIME;
storage.updateStatistic(value, StatisticsType.GAME_TIME);

value = storage.getStatistic(StatisticsType.bullet_EATEN);
value += Static.bullet_EATEN;
storage.updateStatistic(value, StatisticsType.bullet_EATEN);

Static.GAME_TIME = 0;
     }
    });
  }
 
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
   
    if (!(this.HardReset == null || !this.isStarted() || Static.STOP || Static.GAME_STOP)) {
   
      if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {

this.HardReset.setRotation(180f);
this.HardReset.moveLeft();
     }
     else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
 
this.HardReset.setRotation(0f);
this.HardReset.moveRight();
     }
     else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
 
this.HardReset.setRotation(-90f);
this.HardReset.moveUp();
     }
     else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
 
this.HardReset.setRotation(90f);
this.HardReset.moveDown();
     }
     else if (keyCode == KeyEvent.KEYCODE_BACK) {

this.saveStatistics(); 
     }
    }
   
    if (keyCode == KeyEvent.KEYCODE_MENU) {
   
      Static.PAUSE = !Static.PAUSE;
    }

    return super.onKeyDown(keyCode, event);
  }
}

No se si es realmente parte del codigo fuente realmente o solo lo quieren simular.
Que alguien lo compile a ver que sale [+risas]

Cuando llegue a casa probare la demo, pero vamos que sin estar en español y durando tan poco si acaso le comprare cuando este por 5-10€
Efraim27 escribió:Que alguien lo compile a ver que sale [+risas]

Cuando llegue a casa probare la demo, pero vamos que sin estar en español y durando tan poco si acaso le comprare cuando este por 5-10€

No esta completo, logicamente asi que compilar poco XD por no hablar de modelos, etxturas,.. XD Solo sale esa parte del codigo y luego se va repitiendo pero a lo mejor la liant como los de dead island y cuelgan lo que no es i nos dan el codigo entero XD XD
Yo tambien si me lo pillo esperare en el futuro en algun oferton de estos de steam.
Vaya no tenia ni idea de este juego :-? y graficamente es bastante wapo viendo las screens y videos en HD. Ademas del entorno bastante destructivo. Las secuencias de video son en comic digital al estilo MGS peace walker o portable ops de psp, no? xD Una verdadera lastima que no lo traigan en subs español..... ¬_¬ pero bueno quizas cae cuando lo vea aun mas tirado de precio.

Por cierto que motor grafico usa?
THumpER escribió:Vaya no tenia ni idea de este juego :-? y graficamente es bastante wapo viendo las screens y videos en HD. Ademas del entorno bastante destructivo. Las secuencias de video son en comic digital al estilo MGS peace walker o portable ops de psp, no? xD Una verdadera lastima que no lo traigan en subs español..... ¬_¬ pero bueno quizas cae cuando lo vea aun mas tirado de precio.

Por cierto que motor grafico usa?

Por lo que he leído el motor gráfico es de factura propia, lo cual es de agradecer tras tanto uso del UE3.

La demo es más que recomendable. A nivel gráfico es muy resultón en ultra, vamos, que entra bastante bien por la vista. Como han comentado otros, a nivel jugable es bastante clásico: desbloquear puertas para avanzar, oleadas de enemigos que se abalanzan, sin cobertura, sin regeneración de vida... En máxima dificultad la demo no es un paseo, teniendo que hacer buen uso de las posibilidades del escenario y las armas. En cuanto a las armas, sólo vas equipado con dos (una lanza balas y otra plasma) a las que vas añadiéndoles características nuevas en los terminales que hay desperdigados por el mapa.

La demo se me ha hecho cortísima, pero lo poco que se ve me ha atraído, tanto a nivel visual como de gameplay, siendo para mi su mayor pega el precio de salida. Me jode porque es una sorpresa que no me esperaba y me pilla con bastantes títulos pendientes en la recámara, además de que mi presupuesto es limitado y en breve me haré con otros títulos que para mi son de compra obligada.
N30designs escribió:A mi lo que me sorprende es que esta bastante bien optimizado, pocos juegos he probado que pueda poner a 2560x1440 de una manera fluida y este rula muy bien con todo a tope y esa resolución.


La resolución no es el mejor indicativo para valorar la optimización, sólo es cuestión de VRAM. En la mayoría de juegos, con una gráfica de 2GB apenas noto diferencia de rendimiento entre la tv (1080) y monitor (1600) por resolucion. Otra cosa son los filtros, físicas, efectos (ambient occlusion, parallax... etc), activando todo ahí es donde se nota la optimización según como rinda de fps en un pc determinado.
VollDammBoy escribió:
THumpER escribió:Vaya no tenia ni idea de este juego :-? y graficamente es bastante wapo viendo las screens y videos en HD. Ademas del entorno bastante destructivo. Las secuencias de video son en comic digital al estilo MGS peace walker o portable ops de psp, no? xD Una verdadera lastima que no lo traigan en subs español..... ¬_¬ pero bueno quizas cae cuando lo vea aun mas tirado de precio.

Por cierto que motor grafico usa?

Por lo que he leído el motor gráfico es de factura propia, lo cual es de agradecer tras tanto uso del UE3.

La demo es más que recomendable. A nivel gráfico es muy resultón en ultra, vamos, que entra bastante bien por la vista. Como han comentado otros, a nivel jugable es bastante clásico: desbloquear puertas para avanzar, oleadas de enemigos que se abalanzan, sin cobertura, sin regeneración de vida... En máxima dificultad la demo no es un paseo, teniendo que hacer buen uso de las posibilidades del escenario y las armas. En cuanto a las armas, sólo vas equipado con dos (una lanza balas y otra plasma) a las que vas añadiéndoles características nuevas en los terminales que hay desperdigados por el mapa.

La demo se me ha hecho cortísima, pero lo poco que se ve me ha atraído, tanto a nivel visual como de gameplay, siendo para mi su mayor pega el precio de salida. Me jode porque es una sorpresa que no me esperaba y me pilla con bastantes títulos pendientes en la recámara, además de que mi presupuesto es limitado y en breve me haré con otros títulos que para mi son de compra obligada.


Pues me alegra saber que no usan el unreal engine porque estoy de ese motor hasta las narices! y la mayoria de juegos lo usan sin matarse en cambiar nada o mejorar algo.... vamos que usan lo basico de lo basico y se ve como el culo.
Este juego junto con el Red Orchestra 2 son los únicos que voy a comprar en lo que queda de año. Y además con gusto, primero por el reconocimiento al estudio que está detrás; y segundo por el valor e iniciativa de ser exclusivo (no basura consolizada) de PC.

Y es posible tb el RAGE según esté de optimizada la versión pc, si es como dicen que ha llevado un desarrollo paralelo al de consolas y no está rebajado por las limitaciones físicas de éstas.
THumpER escribió:Pues me alegra saber que no usan el unreal engine porque estoy de ese motor hasta las narices! y la mayoria de juegos lo usan sin matarse en cambiar nada o mejorar algo.... vamos que usan lo basico de lo basico y se ve como el culo.

El juego es exclusivo de PC y pese a ser producido por un estudio pequeño, se nota que está hecho con cariño y esmero orientado a esta plataforma.

[offtopic] El mando de X360 cayó al suelo en la primera partida por culpa de la vibración y tuve que desconectarlo al momento. Creo que la voluntad del juego, su alma "pecera", decidió tirar ese artefacto infernal al suelo... Eso o hay un port para X360 cerca. [carcajad]
Tenéis que tener en cuenta la inteligente campaña de promoción que están haciendo del juego.
Si os repiten constantemente palabras: SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE.....cuando alguien os pregunte de qué va Hard Reset q coño creéis que le vais a decir?? xD

Q coño se va a notar el cariño y el esmero joder??? yo noté un juego con detalles interesantes y POCO más. Esperaré a valorarlo cuando lleve unas cuantas horas jugadas.

EDITO: Que conste que a mi me moló y tengo ganas de más!
Mr_Bones escribió:Tenéis que tener en cuenta la inteligente campaña de promoción que están haciendo del juego.
Si os repiten constantemente palabras: SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE SHOOTER VIEJA ESCUELA PC EXCLUSIVO DOOM QUAKE ESTUDIO INDEPENDIENTE.....cuando alguien os pregunte de qué va Hard Reset q coño creéis que le vais a decir?? xD

Q coño se va a notar el cariño y el esmero joder??? yo noté un juego con detalles interesantes y POCO más. Esperaré a valorarlo cuando lleve unas cuantas horas jugadas.

EDITO: Que conste que a mi me moló y tengo ganas de más!


Se nota que no tienes olfato en esto de videojuegos, para distinguir cuándo el talento y creatividad emergen por encima del resto de productos genéricos, shooters en este caso. Este juego se divisaba destacable ya hace meses, sólo desde su anuncio; sin trailers ni gameplays ni nada.
A mi me parece muy bien la iniciativa de sacar hoy dia un juego exclusivo de PC dejando totalmente de lado a las consolas (ojala mas compañias hicieran lo mismo, o al menos hacer versiones por separado de pc y consolas), pero aunque les apoyare comprandole no sera de lanzamiento por no estar traducido. Probe la demo y me gusto la verdad, echaba de menos un juego asi XD
Maravilla! nada mas que añadir a ver si mañana o pasado me lo pillo que ta uno de pasta ciego xD simplemente maravilla!
de momento he jugado el primer capítulo.
no me gusta la tasa de frames tan variable que tiene. en unas zonas lo juego a 60, otras a 30.
creo que podría estar un poco mejor optimizado, gráficamente cumple pero he visto cosas mejores moverse con más soltura.

la jugabilidad me gusta, es bastante entretenido.
si os gustan los shooters este no decepciona, (de momento).
mithra escribió:de momento he jugado el primer capítulo.
no me gusta la tasa de frames tan variable que tiene. en unas zonas lo juego a 60, otras a 30.
creo que podría estar un poco mejor optimizado, gráficamente cumple pero he visto cosas mejores moverse con más soltura.

la jugabilidad me gusta, es bastante entretenido.
si os gustan los shooters este no decepciona, (de momento).


Qué configuración tienes? has probado a bajar detalles/opciones gráficas?
Pues a mi no me acaba de convencer. No se, le falta alma al juego. Y mira que me molan las presentaciones de las misiones en estilo cómic pero... no se, le falta "algo". Juego en "hard" (tras probar en insane y ser reventado 3 veces en 5min [+risas] ) y aunque el juego está bien y tal... no me acaba de convencer.

No se si son las armas, o los enemigos o qué, pero cuando juego me quedo frío.
hombre, el juego no es un triple a pero se deja querer.
para pasarlo 1 vez está bien, aunque ya veo que no ha tenido mucha acogida.

sobre mi configuración: lo juego a 720p, con antialias y texturas en alto.
mithra escribió:hombre, el juego no es un triple a pero se deja querer.
para pasarlo 1 vez está bien, aunque ya veo que no ha tenido mucha acogida.

sobre mi configuración: lo juego a 720p, con antialias y texturas en alto.


Pues no se que decirte pero yo con mi portátil de la firma lo juego perfectamente tal y como me lo configura el juego de serie y se ve y se mueve como ningún otro juego había jugado en este portátil.
darkni escribió:
mithra escribió:hombre, el juego no es un triple a pero se deja querer.
para pasarlo 1 vez está bien, aunque ya veo que no ha tenido mucha acogida.

sobre mi configuración: lo juego a 720p, con antialias y texturas en alto.


Pues no se que decirte pero yo con mi portátil de la firma lo juego perfectamente tal y como me lo configura el juego de serie y se ve y se mueve como ningún otro juego había jugado en este portátil.


Pues con una ati 4670m tiene que venirte a resolucoin 1024xasaber tu, si no mucho sentido no tiene
Pues juego a 1366x768 que es lo máximo de la pantalla o sea a 720p y la config que me pone el juego por defecto todo en alto sin AA y ya te digo se mueve fantástico mira haber la configuración que tienes que igual tienes algo muy subido.
que duros que son algunos bichos, sobretodo los de dos patas que se te echan encima a toda leche.
acabo de instalar el update 1, a ver si se nota algo.
Justin Ackles está baneado por "clon de usuario baneado"
¿Alguien sabe donde comprarlo en formato fisico?

Gracias
Que yo sepa, solo se ha lanzado por steam
45 respuestas