Skip to content
Cache server module for godot engine
C++ C Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
README.md
SCsub
cacheserv_defines.h
config.py
control_queue.h
data_helpers.cpp
data_helpers.h
file_access_cached.cpp
file_access_cached.h
file_access_unbuffered_unix.cpp
file_access_unbuffered_unix.h
file_access_unbuffered_unix.os
file_access_unbuffered_windows.cpp
file_access_unbuffered_windows.h
file_cache_manager.cpp
file_cache_manager.h
register_types.cpp
register_types.h

README.md

godot-cacheserv

Cache server module for godot engine

This module was made as part of the Google Summer of Code 2019 program. The purpose of this module is to allow Godot engine to shift from using OS based caching for any IO to its own caching, relying only on fast unbuffered IO on the OS side. This allows for ease of use within costrained environments such as game consoles and other limited hardware.

Here is a list of all the commits I've made during the project time period.

I've also made a technical document that attempts to explain how everything works.

Current state

As of the time of writing this document, the core functionality of this module is present. However, there are some bugs which must be resolved to make the module usable.

The main blocking bug is with the read mechanism: the read operation may read fewer bytes than specified. I am still investigating the cause of this bug.

Installation

This is an engine module for the Godot engine, and is intended to be used in the engine as a drop-in module at compile-time.

  • First, retrieve the Godot engine source code from the Godot engine main repo.
  • Navigate to the modules folder.
  • Execute the following command: $ git clone https://github.com/WarpspeedSCP/godot-cacheserv cacheserv

The module should now be present in the cacheserv subdirectory and will automatically be included when the engine is built through scons.

Usage

This module exposes one type intended for general use: the FileAccessCached class. This class provides a FileAccess style frontend to the file cache server which does all the heavy file IO. FileAccessCached is available through both GDScript and C++.

In addition, two unbuffered versions of the FileAccess class are provided, one for unix, and the other for windows. Of these, the unbuffered unix implementation is complete while the unbuffered windows version is not. I intend to finish what remains within a week of writing this.

You can’t perform that action at this time.