Valheim
Install with App

Details

Latest version
0.1.5
Last Updated
First Uploaded
Downloads
170
Likes
0
Size
24KB
Dependants
ADDatHost Valheim hosting
30% off

Changelog

0.1.5

  • Remar ahora cuesta stamina de entrada, 1 por segundo. Antes venía en 0 y había que activarlo a mano, así que parecía que no consumía nada.
  • Quedarse sin stamina ya no cancela la remada: la pausa y la reanuda sola al recuperar un cuarto de la barra. En una travesía larga, cancelarla obligaba a estar apretando la tecla cada tanto. Avisa al pausar y al volver.

El cobro pasó de tandas de 2 segundos a medio segundo, y eso cambia el significado del número. El juego reinicia el retardo de regeneración en cada cobro: cobrando cada medio segundo la regeneración queda apagada mientras remás y el gasto neto es exactamente el que dice la opción. Con las tandas de 2 segundos la regeneración se colaba entre cobro y cobro, y como regenera 5 por segundo, cualquier costo por debajo de 2,5 no gastaba nada en la práctica — el número configurado no significaba lo que aparentaba.

Con el default de 1 y 75 de stamina se rema poco más de un minuto seguido, bastante más con comida. Para que pese más, subí CostoStaminaPorSegundo; en 0 vuelve a ser gratis.

0.1.4

  • El timonel ve la velocidad del barco. Llevando el timón, la misma tecla de remar muestra Velocidad: 3.4 m/s (6.6 nudos). Es la tecla que para el timonel no tenía otro uso, porque no puede remar. Sirve para medir de verdad cuánto aporta la tripulación: apretar antes y después de que se pongan a remar. En reversa sale negativo. Se apaga con MostrarVelocidad.

La velocidad se mide siguiendo la posición del barco y no leyendo su rigidbody, que es lo que parecería obvio. El motivo: el juego solo replica la velocidad del cuerpo físico a los clientes que no son dueños si el prefab lo tiene habilitado, y si no la deja en cero. Como el timonel no es necesariamente el dueño del barco, leerla de ahí habría mostrado 0,0 m/s con el barco navegando. La lectura ignora el movimiento vertical, así que el cabeceo con olas no la infla.

0.1.3

  • Remar y caminar ya no son compatibles. Antes podías activar la remada y seguir paseándote por la cubierta con WASD sin que se cortara. Ahora soltás el remo apenas te movés, y tampoco podés empezar a remar en movimiento. Se apaga con CancelarAlMoverse si preferís lo de antes.
  • Si apretás la tecla cuando no podés remar, el mod te dice por qué ("estás en movimiento", "estás en el timón", "el barco no está remando") en vez de no hacer nada.

El corte mira el input del teclado, no la posición del personaje, así que el cabeceo del barco con olas no lo dispara: solo se corta si realmente tocás una tecla de movimiento.

0.1.2

  • La tecla por defecto para remar pasa de G a B: G ya estaba ocupada por un acceso rápido. Se sigue cambiando en Atajo.

0.1.1

Correcciones de la auditoría de seguridad y de la revisión de código, todas antes del primer reparto. Nada de esto cambia cómo se juega.

  • CRÍTICO: un cliente modificado podía congelar el cliente de cualquiera que estuviera simulando un barco. El freno anti-inundación se llevaba la cuenta por remitente, y el remitente de un RPC lo escribe el que envía, así que mandando uno distinto cada vez el diccionario crecía sin límite y su propia limpieza se volvía el trabajo del ataque. Ahora la identidad se valida antes de tocar cualquier estructura, con lo que las claves posibles quedan acotadas a los jugadores que están realmente a bordo. Más un tope duro de remitentes y un freno propio para el log de rechazos.
  • Un aviso que fallaba la validación ya no puede borrar a un remero legítimo. Antes, un mensaje con remitente falsificado cancelaba la remada de la persona que decía ser. La limpieza de los que se bajan ya la hacía el camino de solo lectura.
  • El aviso "Remando: N" al timonel se manda solo si su personaje tiene dueño. Si no, ese aviso se convertía en un broadcast a todo el servidor.
  • Activado = false ahora también apaga la recepción de avisos, no solo el efecto.
  • La fuerza del barco se restaura solo si sigue siendo la que escribimos nosotros, para no pisar a otro mod que esté usando la misma técnica sobre el mismo campo.
  • El empuje con la vela ya no puede aplicarse a un barco que simula otro cliente, en el caso de que otro mod cancele nuestro enganche a mitad del ciclo de física.
  • El costo de stamina dejó de ser esquivable: alternando la tecla cada menos de 2 segundos se remaba gratis.
  • Si el empuje falla, se apaga y lo dice una vez, en vez de escribir un error por barco y por paso de física.
  • El aviso al dejar de remar ahora dice el motivo correcto: antes decía "el barco dejó de remar" incluso cuando lo que pasaba era que acababas de tomar el timón.
  • La caducidad de remeros se ajusta sola si quedó configurada por debajo del latido, que hacía titilar el empuje.

0.1.0

Primera versión. Sin probar todavía en el servidor: el protocolo de prueba está en docs/pruebas.md, y la parte que importa (secciones C en adelante) necesita dos personas.

  • Los jugadores parados en un barco pueden remar junto al timonel apretando G y sumarle velocidad. El timonel no se cuenta a sí mismo, porque ya es la fuerza de remo del juego base.
  • Por defecto solo actúa en las velocidades de remo, que es lo único que sirve con viento en contra. Con AplicarEn se puede extender a la vela izada contra el viento, o a todo.
  • La activación es alternando con una tecla; se puede cambiar a mantener la tecla apretada.
  • Costo de stamina configurable, apagado por defecto. Cuando se activa, el cobro se hace en tandas espaciadas a propósito: el juego reinicia el retardo de regeneración en cada cobro, así que cobrar seguido no cuesta un poco de stamina, apaga la regeneración entera.
  • Avisos en pantalla: "Estás remando" al remero y "Remando: N" al timonel cuando ese número cambia.
  • Log opcional de quién rema, cuántos cuenta el barco y qué avisos se descartaron.

Sobre cómo está hecho, que explica buena parte del código:

  • La física del barco corre en un solo cliente. Ship.CustomFixedUpdate corta con un early return para todo el que no sea dueño del ZDO, así que un remero no puede empujar el barco desde su propia máquina. Le avisa al dueño por RPC, con el mismo patrón que usa el juego base cuando alguien pide el timón.
  • No se reimplementa nada de física. Toda la fuerza de remo del juego sale de una sola línea que multiplica m_backwardForce; el mod escala ese campo antes de que corra el método y lo devuelve después, con un finalizador y una restauración defensiva por si una excepción se lleva puesto el postfix. Así hereda gratis el nivel del agua, la atenuación por timón, la dirección y el punto de aplicación.
  • El cliente que simula el barco valida todo. Un aviso de remada tiene que venir de alguien que esté a bordo según los triggers de física del propio dueño, y el remitente del RPC tiene que ser el dueño del ZDO del jugador que dice ser.
  • No se instala en el servidor, no mueve objetos y no agrega campos propios al mundo guardado.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.