Roles | Engine Programmer & Scrum Master |
---|---|
Team | Godspeed 9 students |
Release date | June 28 2018 |
Duration | February 2018 - May 2018 |
Platforms | Windows, PlayStation 4 |
Languages | C++, C#, Batch, CMake, GLTF |
Lux Engine is a cross-platform 3D game engine with a a physically-based rendering pipeline tailored for anti-gravity racing games.
For this project we had 8 weeks at the near-end of my second year at Breda University of Applied Sciences, right before Drivinity. As an Engine & Tools Programmer my job was to develop the architecture of the object-oriented game engine, and to implement a physically based rendering pipeline with GLTF. I also managed the Scrum board and iterated on the design and implementation of most low-level architecture and classes. Other work, such as the renderer and custom memory allocator was done by fellow programming students. Our goal was to develop a cross-platform game engine targeting PlayStation and Windows.
Polling for device input and connection.
uint32_t Input::Update()
{
m_pJoystick->Acquire();
int32_t result = m_pJoystick->Poll();
if (result < 0)
{
printf_s("Missing device: %d", result);
return LUX_OK;
}
// Convert from (0,255) output to (-1,1)
float leftX = ((uint8_t)joystate.lX * 2 - 255) * m_MaxByteAsFloat;
// Adjust for deadzones
if (fabsf(leftX) < m_Controller.m_AnalogDeadZone)
{
m_Controller.m_LeftStick.m_X = 0.0f;
}
else
{
m_Controller.m_LeftStick.m_X = leftX;
}
if (0x00 != (0x80 & joystate.rgbButtons[9]))
{
m_Controller.m_Buttons |= Button_Select;
}
// Detect button changes using XOR and AND gates
uint32_t buttonChanges = m_Controller.m_Buttons ^ m_Controller.m_PreviousButtons;
m_Controller.m_ButtonsDown = buttonChanges & m_Controller.m_Buttons;
m_Controller.m_ButtonsUp = buttonChanges & (~m_Controller.m_Buttons);
m_Controller.m_PreviousButtons = m_Controller.m_Buttons;
return LUX_OK;
}
Returning key states.
bool Input::IsButtonDown(const EButton& a_Button)
{
return ((m_Controller.m_Buttons & a_Button) != 0);
}
Jenkins nightly and hourly builds with polling. Post result to Slack.
CMate, a CMake VS solution generator for DirectX and ORBIS (PS4).
Early support for GLTF models and scenes using GitHub project.
JIRA tasks, sprints etc.
Sprints, meetings, planning etc.