Pregunta

En una pregunta relacionada, pregunté cómo obtener información a través de IUP . Esto funciona bien, excepto que pasa por el sistema y está sujeto a la tasa de retratamiento que no es óptima para un juego. Lo que realmente me gustaría es la capacidad de obtener el estado actual de cualquier clave en un momento dado. ¿Hay alguna manera de hacer esto (a través de IUP o de otra manera)?

¿Fue útil?

Solución

Probablemente necesite ajustar las llamadas a la API Win32 apropiada, DirectX o lo que sea en un módulo lua. La captura de eventos de pulsación de teclas en IUP requiere que se entreguen a la ventana o al control a través de "normal" Mecanismo de mensaje de Windows, y probablemente no sea el mejor enfoque en un marco de juego.

Puede usar un objeto de temporizador IUP para ejecutar un redibujo en un horario, pero aún necesita una forma de recopilar el estado del teclado. Si desea usar un gamepad, joystick o cualquier HID que no sea el teclado y el mouse, entonces IUP no ayudará directamente en ningún caso.

Esto se hace fácilmente con una pequeña cantidad de código C compilado en una DLL.

Se puede hacer con bastante facilidad con SWIG , para algunos tipos de API. Otros tomarán suficiente trabajo de configuración / desmontaje para que sea más fácil simplemente hacer el envoltorio a mano.

También existe el módulo Alien para Lua que permite llamadas directas a API arbitrarias desde Lua puro. Alien se incluye como parte de Lua para Windows , así como a través de su página de proyecto en Luaforge. Alien en sí es incluso algo portátil en todas las plataformas, aunque nada de lo que llamaría es

.

Otra cosa a tener en cuenta al seguir este camino es uno o más de los motores de juego existentes. Por lo general, ocultan el bucle de eventos dentro del motor (al igual que IUP), pero están optimizados para la creación de juegos en lugar de las aplicaciones de escritorio.

Hay varios números de los que he oído rumores en la lista de correo de Lua. Uno que viene a la mente porque se ha mencionado con bastante frecuencia es LÖVE .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top