Giter Club home page Giter Club logo

softbodyplatformer's Introduction

How to Make a 2D Soft-Body Platformer with Position Based Dynamics

This project was my senior thesis at Yale. I built it in Spring 2022 towards completion of my B.S. in Computer Science. This repository contains my project code, which is a supplement to my thesis.

For this project, I wanted to make a video game that included soft-body dynamics – squishy objects. So, I built a demo game level on top of a state-of-the-art physics engine, Jan Bender's PositionBasedDynamics. This is a fantastic physics library which uses the Position Based Dynamics technique to a simulate a large range of phenomena, including rigid bodies and soft bodies. The advantage of this method is that provides accuracy and interactivity, which is ideal for physics-based puzzle games, for example. Like many complex research techniques, the library is difficult to understand: so this project provides the first guide to using it, in order to make PBD accessible to all hobbyist C++ developers.

Here is the demo game level I made using my code. You can see the cube character jump around the level, interacting with all the squishy objects in order to reach its goal, the top platform, in the smallest number of jumps.

Demo Game Level

Abstract

The hobbyist game developer community has often pushed the limits of platform games. One popular feature in these games is soft-body dynamics, since it adds interest and greatly extends the range of possible motion. The PositionBasedDynamics library provides a fast and accurate implementation of soft bodies, along with several other physically-based features, but there are currently few guides to help amateur developers learn to use it. In this paper, we describe a method for building a game engine by making small, modular extensions to the PositionBasedDynamics library.

Beyond demonstrating how to build the engine, the aim of the paper is to show that this existing soft-body implementation can be used to make fun platformers. The result is a simple, enjoyable physics puzzle game level which uses deformable objects to present interesting challenges to the player. The hobbyist game developer community has always used the tools available to them to make an incredible range of wonderfully innovative games --- with this paper, we aim to make one more tool accessible to them.

Citations

This project is primarily an extension of Jan Bender's PositionBasedDynamics. For a list of citations, please see my main thesis.

Acknowledgements

Special thanks to Professor K. for advising me and giving me invaluable thanks throughout. Many thanks also to Professor Jan Bender, who built the amazing PositionBasedDynamics library – the core of this project – and kindly answered my questions during development.

softbodyplatformer's People

Contributors

janbender avatar zsciamma avatar louen avatar digitalillusions avatar kugelstadt avatar besoft avatar cgmb avatar meshula avatar stefanmessmer avatar termi3 avatar massanoori avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.