Cita de: Hechelion en 11 de Marzo de 2011, 10:20:30 PM
Ojo, no digo que el diseño sea malo, al contrario, es simple y robusto. Lo que decía y por experiencia es que te puede quedar corto (que a mi ya me ha pasado varias veces, por eso programo pesando en que sea lo más versátil posible) si para tu diseño estás seguro que con 9 acciones y 99 tiles estás bien, pues entonces adelante, no le veo problemas al formato.
Sobre modificar un dígito, no es tan simple (o por lo menos, lo que yo entiendo), asumiendo que creas el mapa y tienes la información:
0195,01294,0195,0040,0040 etc
Y quedaste corto y se te ocurre agregar un dígito más, tendrías que transformar todo el mapa:
un 0195 deberá pasar 01095, si no, el 1 de la colisión pasará a ser parte de la información del tile, con eso me refiero a que es poco escalable, porque si tienes creado un mapa y se te ocurre cambiar algo debes editar todos los mapas anteriores (hablamos de editar la estructura del mapa a mitad de camino)
Añadiré un dígito más ahora, pudiento tener todavía más posibilidades, aunque según lo que he estimado, no creo que vaya a utilizarlos.
Cita de: Hechelion en 11 de Marzo de 2011, 10:20:30 PM
A veces me ha pasado que dices, una acción "hablar basta y sobra" y de pronto te das cuenta que para que el NPC haga lo que realmente quieres que haga pues tienes que pasar otro parámetro y vamos agregando otra opción y así va sumando, por eso, personalmente creo que es mejor que la programación sea versatil y fácilmente escalable, pero nuevamente, es una opinión y no significa que sea lo mejor para todos, en especial si ya tienes bien definido tu juego.
No has entendido bien. Las acciones no son de los NPCs si no de las casillas o celdas.
Para hablar con los NPCs y en general para interactuar con cualquier objeto, ya es otra historia.
Las acciones son sucesos que ocurren cuando el jugador entra en esa casilla, y no tiene nada que ver con los NPCs.
Por ejemplo, sería teletransportar a otro mapa, mostrar un texto, etc
Cita de: Hechelion en 11 de Marzo de 2011, 10:20:30 PM
Edit:
Acabo de probar el código que colocaste abajo y a mi me equipo le toma menos de un segundo completarlo. Algo más debes tener que está causando la demora.
Gracias, pero ya he encontrado el problema.
No estaba exactamente en ese bucle, si no en otro que se ejecuta a continuación de ese.
El código es el siguiente:
Código [Seleccionar]
Type CellType
action as string
isBlocking as string
material as string
End Type
Dim map() as CellType
Dim mapWidth as integer, mapHeight as integer
Dim asciiMap as string
mapWidth = 300
mapHeight = 300
asciiMap = ""
Redim map(mapWidth, mapHeight) as CellType
for i = 0 to mapHeight -1
for j = 0 to mapWidth - 1
'Concateno en asciiMap la información de cada celda del mapa.
asciiMap = asciiMap & map(j,i).action & map(j,i).isBlocking & map(j,i).material
'En este if...endif compruebo si no es el último elemento, y le añado una coma.
if j < mapwidth - 1 then asciiMap = asciiMap & ","
next j
'al finalizar con cada fila, añado un retorno de carro.
asciiMap = asciiMap & vbcrlf
next i
Pues ese código aparentemente tan sencillo, ralentiza eternamente al programa.
He realizado varias pruebas, y la conclusión es que las operaciones de concatenación de caracteres son tremendamente lentas.
En principio podría omitir esto, ya que en realidad esta función sirve para mostrar en un textbox una previsualización del fichero del mapa.
De todas maneras, me gustaría, a ser posible, si alguien me pudiese ofrecer alguna solución para esto.
Ahora bién, para escribir en el fichero el mapa también voy a tener que concatenar así que aunque elimine la previsualización ascii, me voy a encontrar el mismo problema.
¿Alguna solución para esto?
Un saludo y gracias.