Registrarse

[Otros] Cómo hacer un HACK y no MORIR en el intento

Milotix

Hacker Rom desde 2007
Primero que nada, aclaremos que el título es una metáfora, nadie morirá por fracasar como hacker.

Bien, me presento para los que no me conocen, soy Milotix y puedo decir que soy de los usuarios más viejos del foro, ¿A qué voy con esto? Que en mis muchos en el mundo del RH Latinos [Coloco latino ya que estuve tanto en foros hispanos como portugueses, a lo que me refiero a que deriva de hablantes de una de las lenguas romances] vi como pasaron muchos hacks y muchos hackers ante mis ojos, muchos con hacks fantásticos pero, al final de todo, fracasaron.

¿Cuándo alguien fracasa como hacker? Definitivamente, cuando se retira sin haber conseguido dejar seña de su trabajo, por ejemplo, una beta.

¿Por qué? Tomen el hacer un hack como escribir una novela, que en definitiva es eso, pues ponemos emociones, aventuras, risas, tristesa en juego, si un escritor muestra un ensayo de su novela y se ve fantástica, pero nunca la publica, es posible que para los de su época sea reconocido y recordado, pero para las próximas generaciones no sabrán ni que un día fue tan importante para el mundo donde están parados.

Aquí sucede lo mismo, podría dar una lista inmensa de hacks que parecían estar fantástico y se esfumaron sin dejar rastro alguno.

Es cierto que esto es un ciclo, y como todo ciclo tiene su fin, de hecho, yo estaba retirado en el fracaso y dos grandes colegas, Ángel y Xiros me convencieron de volver, y Xiros de ponerle entusiasmo y sacar Beta y, grácias a ellos, tienen quien los divierta las semanas con sus resúmenes, tienen la Beta 1 del Cobalto Azul y la Beta 2 del Islas Doradas para jugar y divertirse: Si hoy me retirara me iria más que contento, no me sentiría completo pero si me sentiría que algo le deje a este mundo, una huella mía quedó en él.

Ahora, ¿Cuántos se enfrentaron a una situación de frustación al tener ideas pero no saber como aplicarlas? Yo miles de veces, pero ahí es dónde funciona el ingenio. ¿Cómo? Miren este script:



Muchos pensaron que era I/O [De hecho, en el concurso apliqué I/O, pero aquí no y es un sistema parecido que incluso me gusta más]

pero NO, es simplemente la cámara puesta donde esta el mini que simboliza la elección [el cuadrado blanco] y el mini más arriba, el prota se mueve y hace que suceda eso, ¿Difícil? Si tienes conocimientos MÍNIMOS de scripting puedes hacerlo a la perfección, les dejaré los scripts del sistema para que vean que no es dificil, solo un poco tedioso por la cantidad de flags, pero eso es por otra cosa.

1
'-----------------------
#org 0x819BBF
checkflag 0x1900
if 0x1 goto 0x8836761
checkflag 0x1901
if 0x1 goto 0x883B748
checkflag 0x1902
if 0x1 goto 0x883BA87
checkflag 0x1903
if 0x1 goto 0x883BECF
checkflag 0x1904
if 0x1 goto 0x883C26C
checkflag 0x1905
if 0x1 goto 0x883CB76
checkflag 0x40CE
if 0x1 goto 0x8819D90
release
end

'-----------------------
#org 0x836761
fadescreen 0x1
pause 0x30
movesprite 0x3 0x7 0xB
special 0x113
applymovement MOVE_CAMERA 0x881A9ED
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x8841091
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x83B748
fadescreen 0x1
pause 0x30
movesprite 0x3 0xB 0xB
special 0x113
applymovement MOVE_CAMERA 0x881A9ED
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x8841220
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x83BA87
fadescreen 0x1
pause 0x30
movesprite 0x3 0x10 0xA
special 0x113
applymovement MOVE_CAMERA 0x881A9ED
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x884B2E1
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x83BECF
fadescreen 0x1
pause 0x30
movesprite 0x3 0x16 0x9
special 0x113
applymovement MOVE_CAMERA 0x881B5B2
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x8841254
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x83C26C
fadescreen 0x1
pause 0x30
movesprite 0x3 0x12 0xE
special 0x113
applymovement MOVE_CAMERA 0x881C934
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x8841277
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x83CB76
fadescreen 0x1
pause 0x30
movesprite 0x3 0x7 0xD
special 0x113
applymovement MOVE_CAMERA 0x881C934
waitmovement 0x0
special 0x114
applymovement MOVE_PLAYER 0x884128A
waitmovement 0x0
setflag 0x40CE
setvar 0x40CE 0x1
fadescreen 0x0
release
end

'-----------------------
#org 0x819D90
release
end


'-----------
' Movements
'-----------
#org 0x81A9ED
#raw 4 'Step Down (Slow)
#raw 4 'Step Down (Slow)
#raw FE 'End of Movements

#org 0x841091
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw FE 'End of Movements

#org 0x841220
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw FE 'End of Movements

#org 0x84B2E1
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw FE 'End of Movements

#org 0x81B5B2
#raw 6 'Step Left (Slow)
#raw 6 'Step Left (Slow)
#raw FE 'End of Movements

#org 0x841254
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw FE 'End of Movements

#org 0x81C934
#raw 5 'Step Up (Slow)
#raw 5 'Step Up (Slow)
#raw FE 'End of Movements

#org 0x841277
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw FE 'End of Movements

#org 0x84128A
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2E 'Slide Up
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw FE 'End of Movements

2, un ejemplo de uno de los de movimiento.
'-----------------------
#org 0x81E55B
fadescreen 0x1
pause 0x20
special 0x113
applymovement MOVE_CAMERA 0x8810862
waitmovement 0x0
special 0x114
movesprite 0x3 0xB 0xB
fadescreen 0x0
msgbox 0x881127A '"¿Deseas ir al Puerto Costero \nen I..."
callstd 0x5
compare LASTRESULT 0x0
if 0x1 goto 0x8840B7D
goto 0x8810D78
end

'-----------------------
#org 0x840B7D
fadescreen 0x1
pause 0x20
special 0x113
applymovement MOVE_CAMERA 0x8810AA0
waitmovement 0x0
special 0x114
movesprite 0x3 0x7 0xB
applymovement MOVE_PLAYER 0x8810AAA
waitmovement 0x0
fadescreen 0x0
release
end

'-----------------------
#org 0x810D78
msgbox 0x8829F9E '"Destino seleccionado: \l ... \n ......"
callstd 0x4
subvar 0x40CE 0x1
clearflag 0x40CE
setflag 0x1901
clearflag 0x1900
warp 0x18 0x41 0x2 0x0 0x0
end


'-----------
' Movements
'-----------
#org 0x810862
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw 30 'Slide Right
#raw FE 'End of Movements

#org 0x810AA0
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw 2F 'Slide Left
#raw FE 'End of Movements

#org 0x810AAA
#raw 6 'Step Left (Slow)
#raw FE 'End of Movements


'---------
' Strings
'---------
#org 0x81127A
= ¿Deseas ir al Puerto Costero \nen Isla Costera?

#org 0x829F9E
= Destino seleccionado: \l ... \n ... \lPuerto Costero \l... \n ... \lCoordenadas: 12.11 - 21.13

¿Dificil? NO, ¿entonces? Es cuestión de ingenio, y si aparte tienes los conocimientos, no comprendo tu escusa.

Ahora, puedes tener todo el ingenio del mundo, que si no tienes una buena historia, será lo mismo que la nada, la historia es la ESENCIA del hack, tu cuando haces y cuando juegas un hack, no lo haces por ver las bonitas gráficas o los difíciles sistemas, lo haces para seguir la historia, ¿Acaso te divierte leer un libro sin una historia atrapante, emocionante, y ESO es lo que te gusta.

Saben, JoseJor [aka Reoneky] me comentó que le gustaba mucho mi forma de llevar la historia de un hack suelo darle giros de 180° en todo momento, haciendo que esperas que pasará, algo de lo que ni te imaginas, pondré una vez más como ejemplo mi hack y a Josejr, pues fue quién me dio la critica más completa, en la "cueva del mal" como él la llama, en ningún momento siquiera te imaginas lo que pasará, pensemos como cubos, esta tu amigo, te dice que entren, bla bla bla, pokemon, ¡OH, EL TEAM MALO, QUE LE DERROTAS CON UNA MASCOTA Y NO TE HACE NADA, Y HUYE! pues, ESO es lo predecible, lo esperable, y sucede que quien creías que era Milotix no era, que quien creías que era una persona es una cosa y luego, cuando por fin sales de toda esa situación fea, ¡PUM! De golpe sube la adrenalina pues la policía invade la isla y tienes que irte. ESO es lo que se necesita, que el jugador no se espere que sucederá, que sea todas novedades para él y que en ningún momento sea monótono.

Por eso Ruby me aburrió tanto, es siempre lo mismo, predecible cada script, cada evento, y ahora vuelvo a comparar con una novela, ¿Les gusta una novela donde sea siempre lo mismo? Pues a mi personalmente, leo tres páginas y la tiro.

Finalmente, otro pilar es que el jugador no sea llevado por los scripts, es decir, que hayan y muy intensos, pero que no sean continuos, y darle en todo o en casi todo momento al jugador de hacer lo que a él se le antoje, un ejemplo de ello, son las misiones secundarias, estás están para que el jugador se aleje un poco de la trama principal y aborde otra cosa, por ejemplo, un minijuego, como ejemplo pongo el script de la final de Gershel, tiene su historia de trasfondo pero tienes la opción de pasártela jugando, que en definitiva, eso divierte y anima bastante.

¿Cómo darte cuenta? Es simple, prueba a jugarlo en todo momento VOS, si a vos te aburre el hack, ¿cómo esperas qué a otros le divierta? No tengas miedo a poner cosas estrafalarias o "fuera de contexto" en un juego de pokémon, tu prueba y si te divierte lo dejas, un ejemplo de ello sería que en un hack puedas ser detective e investigar asesinatos, bien hecho estaría genial y puedo afirmar que divertiría mucho.

Eh ahí la combinación para hacer una beta buena y divertida:

Buena Historia y Buena jugabilidad, teniendo eso, los gráficos van y vienen.

Por último, ¿Dónde buscar ideas? A muchos les ha pasado, incluyéndome, que se quedan sin ideas y por ese motivo terminan retirándose, para mi, mi mayor fuente de inspiración son dos, Star Wars y la vida real, basarse en hechos históricos, en personajes de juegos y ponerle un toque personal y usando el ingenio del que se habló arriba.

Es cierto, todos no quedamos en blanco, pero el éxito esta en la perseverancia.

Sin mucho más que agregar, espero que esta pequeña guia les sirva para orientarse un poco más y que no se permitan decaer.

¡Saludos!
 

Sprite

Baneado
Jajaja, creo que hacía falta algo como esto para empujar a novatos como yo a crear su propio hack. Muchas gracias :D
 

Deryko

Graduado (10 dioptrías en cada ojo) en CCPP.
Eres un grande Milo, qué puedo decirte, un gran tema y que tendría que saltarte cada vez que estuvieses deprimido o enfadado en algún aspecto del RH.

Servirá a todos y cada uno de los usuarios y yo por mi parte me lo guardo en favoritos.

¡Saludos!
 

Cheve_X

MoonLover~
Miembro de honor
x)
Esto muy cierto, lo principal es la creatividad y rebuscárselas.
No recuerdo muy bien quien (Sorry :( ) hizo parecer que había hecho una especie de "zoom" x2 y solo era una imágen del mapa con todo aumentado jaja.

Gracias por el Tutorial ;D
 

Feliipe

Usuario de Oro
Estoy de acuerdo contigo, pero creo que te falto una cosas, que es la Perseverancia, aveces las cosas no resultan y muchas veces debes volver a empezar (Mi caso). buen tema.
 

MUDKIP

Chiquitito y Pegajoso
Amigo, me saco el sombrero y te dedico un aplauso.
Sabes yo estoy planeando un rpg, pero la idea que tenia era basicamente darse vuelta en las mismas tramas de siempre.
Leyendo tu tema, me hiciste pensar y todo.
No cambiare la base de la historia xd pero me volare la cabeza buscando cosas frescas para darle al trancurso del juego.

Sinceramente te mereces un like, y si se pudieran pasar whaballs te daria 1000 (mentira xd es solo una expresion)

Entonces, a trabajar :D
 

Sir Shadow

Nadie escapa de su sombra
A favoritos, grosso. Cosas como estas son las que inspiran a los novatos como yo a seguir intentando hackear por muchas dificultades que se nos presentan, pero vos sos la prueba viviente de que se puede llegar lejos en el mundo del RH. Gracias y a favoritos
 
Arriba