GithubHelp home page GithubHelp logo

gd_rusty_fps's Introduction

gd_rusty_fps

FPS library for gdnative written in Rust.

This projects aims to create easy to use .dll library to be used with godot engine for FPS game development.


We have to provide these features:
  • camera look controller -> basic component is done
  • player body walking with slopes etc fixes -> basic component is done, requires jumping that will be implemented later on
  • game hud stuff
  • world interactor -> player should be able to interact with mobs -> the interaction in global is implemented with possibility to pickup items. We gonna add more functionalities on the go as we build a game with this library
  • implement multilang labels system, to allow game multilanguage
  • implement supportive systems initialy with flashlight functionality
  • implement quests system, that is aware of actions, picking up items
  • implement player action system (we have to be able to provide funcionalities that is able to provide reactions to players actions). -> when player gets to area, waits for some time etc. It should be also possible to be connected to quests system aswell.
  • implement jumping for player controller

this library should then be used to create a simple horror adventure game for demonstration.

documentation


Interactible types: - [x] Pickupable items that can be added to inventory on pickup - [ ] Switch item that triggers run action on - [ ] Openable

Usage


This library is ready for technical demos. Download actual release, or build the master branch yourself, by runing cargo build either for production or develop. Provide amundsen.dll to godot project and create gdnative library out of it. Then you can assign provided functionalities to your project.

PlayerController, PlayerCamera
Create KinematicBody scene and add Spatial CameraRotationHelper as child and Camera as child of CameraRotationHelper. Add gdnative script with PlayerController class name and script class from created gdnative library. Same goes for PlayerCamera that you should connect to Camera. Congrats. You should be now possessing a playable character, that can walk and move camera with mouse. note: You have to also create move_forward, move_backward, move_left, move_right as key inputs in your project settings.

PlayerCameraFocus
Create RayCast as child of Camera in your character scene and name it Focus. Add this class as gdnative in same manner as with PlayerController, PlayerCamera. You are now posssessing functionality to interact with world.

Interactibles -> no providing Door, Pickupable
Simply create scene with a static body and provide one of these native classes from our library. You then have acces to exported properties from within the editor, so you can define basics like name, inspec labels etc. Every type has its own attributes and interactions are connected to PlayerCameraFocus, from which these events are called (open, close etc). Later on, we will add more of interactibles and also provide stuff like lock possibility for doors. Doors will implement attributes (key_id, switch_id), which will be proccessed to allow door unlocking.

Inventory
Create Spatial with name Inventory as child of KinematicBody in your character scene. It should connect itself to raycast on picked_up_item signal so items can be added to inventory on pickup event.

gd_rusty_fps's People

Contributors

lordcoconut avatar

Stargazers

Michael Cheng avatar

Watchers

 avatar

gd_rusty_fps's Issues

Add inventory system

Player should be able to posess inventory and items that will be added from interaction component

Add player mob interaction

Player controller shall be able to interact with mobs in game. We shall use raycast to do this and than create a MobInteractor module that will be part of PlayerController.

Camera rotation helper is bugged

Camera rotation helper is not fullfilling planned behavior, as its actually created in a tutorial manner, but we rotate whole player body. We also rotate rotation helper by bad axis, which causes camera rotate like drunk human. We will remove the rotation helper completely,

FpsCharacter node

I think its time to create native node for this library, that will allow us to instantiate basic FPS controller for game. This way, people who wants to create a simple fps wont need to struggle around providing character node structure and classes assembling on their own.

Start fps game creation

We should start creating game with our library. During that, we should also start brooming the code, as its bloatet with tons of missconceptions and too complicated stuff. We should simplify the usage of this library as much as possible.

Door animation playing is required

We have to provide layer to allow door opening animations, either by rotating or animation player. Since animation player is much more likely to be used, we will start with that for our tech demo.

Create camera handler

We need to provide functionality to allow camera movement with clamping. Adjustable mouse sensitivity can be added later on.

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.