Code Monkey home page Code Monkey logo

veloren / veloren Goto Github PK

View Code? Open in Web Editor NEW
5.2K 79.0 350.0 926.93 MB

An open world, open source voxel RPG inspired by Dwarf Fortress and Cube World. This repository is a mirror. Please submit all PRs and issues on our GitLab page.

Home Page: https://www.veloren.net

License: GNU General Public License v3.0

Rust 82.05% GLSL 2.67% Nix 0.05% Dockerfile 0.01% RenderScript 0.01% Shell 0.02% Fluent 15.16% CSS 0.01% HTML 0.02% JavaScript 0.02%
cube voxel rust gfx-rs multiplayer cubeworld terrain game procedural-generation 3d

veloren's Introduction

Veloren logo on a screenshot

pipeline status coverage report translation status dependency status code contributor count financial contributor count discord matrix

Welcome to Veloren!

Veloren is a multiplayer voxel RPG written in Rust. It is inspired by games such as Cube World, The Legend of Zelda: Breath of the Wild, Dwarf Fortress and Minecraft. The game is in active development and enjoys a flourishing player community.

Development

Currently, most communication among contributors takes place on our official Discord server. Similarly, we provide a Matrix server as a more privacy-friendly alternative. You can join it to keep up with the game development, talk with the community or even contribute something yourself. Anyone who shows genuine effort to help is welcome to our team. You do not need to know how to code to contribute to the game!

Translators are welcome to contribute on our Weblate instance.

Translation status

Useful links

Sign up - Here you can create an official account for Veloren. Most Veloren servers require you to register with the official authentication server to play.

Click here for more details about authentication The official authentication server uses TLS encryption extensively. It also employs salted hashing to ensure your login credentials are stored securely. Additionally, the server neither tracks any metrics nor uses data for any purpose other than providing the authentication service.

The wiki - The official wiki which provides various information about the game.

The book - The book is a collection of supplementary information about the game. It includes instructions on how to compile the game.

Future plans - This is the development roadmap and what issues the community is currently working on.

Official social media and websites

Get Veloren

We provide builds for Windows, macOS and Linux. The game can be downloaded on the official website:

https://veloren.net/download/

Due to rapid game development, stable versions become outdated fast and might be incompatible with the public server.

It is recommended to use Airshipper, our official launcher, to keep your game up-to-date easily.

If you prefer to compile the game yourself, follow the instructions in our book.

FAQ

Q: How is this game licensed?

A: It is free to play, modify and distribute. Forever. Since it is a community project, we decided to license it under the GNU General Public License v3.0, which means it will always stay free and open source.

Q: What platforms are supported?

A: Veloren can run on Windows, macOS and Linux on a great range of CPU architectures. However, the x86_64 architecture is the main focus in development. Official builds for the ARM64 architecture are also provided for macOS and Linux. It is likely possible to compile the game on other platforms as well.

Q: Do you accept donations?

A: You can support the project financially on our Open Collective page.

Credit

Our Weblate instance is hosted by Codeberg.

Many thanks to:

  • Software developers who have contributed to the source code repository, hunted bugs and created tools for the game.
  • Artists who have crafted game art, composed music and provided voxel models.
  • Translators who have localized the game to several languages.
  • People who have provided ideas and feedback for the game.
  • Overall, our awesome community who makes this project possible.

veloren's People

Contributors

adamwhitehurst avatar angelonfira avatar atomycx avatar aweinstock314 avatar brunt avatar ccgauche avatar cpetig avatar daforlynx avatar drshongos avatar holychowders avatar imberflur avatar issew avatar jcapucho avatar juliancoffee avatar maxicarlos08 avatar megane90 avatar pfauenauge90 avatar pythonesque avatar samuelkeiffer avatar scottc avatar shanehandley avatar songtronix avatar tailtwo avatar timokoesters avatar tygyh avatar vincentfoulon80 avatar xacrimon avatar xmac94x avatar yusdacra avatar zesterer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

veloren's Issues

Consider implications of payload system

As of a recent commit, the client moved to a payload system for frontend wishing to add additional payloads of their own to types used inside the client. Currently, we only have a single associated type, but this is ripe for expanding to other areas of the codebase: https://github.com/veloren/game/blob/master/client/src/lib.rs#L60.

We need to think about:

  • Is this a good idea?

  • What implications may it have down the line?

  • Is it worth expanding this to the server and other areas of the codebase?

  • How many other uses does it have?

  • Does it improve or hurt readability?

Multiplayer bug

I got this when i try to log-in and join to server.
image
I have already account.

Investigate whether our current network packet system can handle large data transfers like chunk data

We need to transfer large amounts of chunk data. I envisage chunks as large as 32x32x256 blocks at ~4 bytes each, which gives us exactly 1 megabyte per chunk.

Can we handle this on the network side? Should we use some form of chunk compression? Note that erasing colour from the voxel data and generating colour variation client-side could help make the data more suitable for something like RLE.

Note that not everybody has a decent internet connection. This needs to be acceptably quick on anything as slow as 500 Kilobits/s, I'd say.

Network Package Interface

currently packages are send directly over the Socket, however it would be good if the ClientConnection and ServerConnection have multiple socket support (TCP and UDP socket) and the ClientPackage or ServerPackage has some kind of information like reliable, fast, e.t.c which is evaluated by the Connection so that the correct socket is choosen there.
We could implement TCP, UDP, interprocess message

error: linking with `link.exe` failed: exit code: 1

I was trying to test the project on my machine (Windows 10) but I have some issues when running a "cargo run" on server-cli (I have the same problem with voxygen tho):

image

I have no idea what's exactly is happening, all I know is that I installed Rust from the README.md link, same for the SFML library (with https://github.com/jeremyletang/rust-sfml/wiki/How-to-use-rust-sfml-on-Windows). All deps are correctly downloading, but compiling doesn't work.

Tracking Issue for 0.1.0

  • Basic world/chunk generation
    • Client-side chunk generation
    • Minor optimisation
  • Customizable key bindings
  • Single cube as player model
    • We went a step further: basic player model
  • Basic player movement
    • X/Y movement
    • Velocity
    • Gravity
    • Jumping
    • Proper collision system
  • Simple connected/disconnected server events, including entity updates
    • Connection, disconnection
    • Chat messages
    • Realtime player / entity updates
  • User interface
    • Chat interface
    • Ability to connect to server using UI
  • Headless client
    • Create headless client
    • Implement backspace in headless
  • Repo Management
    • evaluate whats needed for gitlab (because if we do it now we have a short buffer to test it fully productive, to revert in case it doesnt fit before 0.2.0 start)
    • code style (evaluate all of them and check if anything needs to be done here)
    • remove old files no longer needed (.old files and worldtest?)
    • fix importing headers
    • rename classes
    • squash files together (e.g. in server) or make 2 files of one (e.g. client/lib)
    • move files to correct folder
    • reduce warnings
    • remove unused dependencies
    • check if all dependencies share same version over project
    • write basic tests for smaller components
    • check comments
  • have a public party at the server to cheer us up a little

.vox file validation test

we need a test that simply loads all voxel files in the voxygen/vox files and tries to load them into a model.
This way Voxel Artists can know if there is any incompatibility between their uploads and the engine.

The method already exists, you just need to reuse the functions from voxygen/src/game.rs for all those files. and maybe write a test in .gitlab-ci.yaml to automatic run this

No Readme!

How am I supposed to stalk this project if I don't know what it's about?! 😜

Separate Packet Serialization/Deserialization to allow custom format.

Currently the packet are just a big enum serialized as-is which limits the way we can craft packet.

For example it's hard to have packet with conditional data.

You could use an Option at the moment but :

  • if things get's nested heavily it's gonna be unreadable
  • if the packet contains a hundred conditional fields like the EntityUpdate will contains later (sending only changed fields), the packet will be twice the size it needs to be because of the way the serializer works with enums, and given the frequency and size of EntityUpdate, it's really bad.

A good idea would be to separate thing out like this :

  • A packet struct containing the pure data
  • A packet serializer/deserializer (which could use the
  • A packet handler to fill/do things with the pure data

Issue with graphics function on Windows 7

unknown

As mentioned by zesterer, this function is linked to a graphics issue and needs to be fixed.

Here is a summary of my system specs using Speccy:

Operating System
Windows 7 Professional 64-bit SP1
CPU
Intel Core i5 2520M @ 2.50GHz 55 °C
Sandy Bridge 32nm Technology
RAM
4.00GB Single-Channel DDR3 @ 664MHz (9-9-9-24)
Motherboard
LENOVO 4291T27 (CPU) 51 °C
Graphics
LCD 1366x768 (1366x768@50Hz)
Intel HD Graphics 3000 (Lenovo)
Storage
298GB HITACHI HTS723232A7A364 ATA Device (SATA ) 37 °C
Optical Drives
No optical disk drives detected
Audio
Conexant 20672 SmartAudio HD

Also, this is a text file with the full system spec dump:

TOM-PC.txt

Add addition entity and player data

Some ideas for information that could be transmitted:

  • velocity
  • orientation
  • animation state
  • label (NPCs get names, player entities get their alias)

Veloren doesn`t start

Hello,
my son has an older PC with Windows10. Installation is working fine and the airshipper is starting.
But then he always get a error-message.

His PC:
System PC

The error message:
error message

Unfortunately, we can't see what exactly the problem is.

We tried the compatibility mode and also started it with admin privileges.
Are there any other options or is it something that the awesome Veloren team can fix?

Best thankful regards
Rumo

Add an actually good collision system

The new collision system needs to be extensible (to allow further modification to player mechanics in the future). Among other things, it needs to:

  • Perfectly resolve voxel collisions from all angles and at all velocities (up to a reasonable level)

  • Allow CubeWorld-like "jumping" up steps

  • Prevent jitters/glitching and other visually displeasing behaviour

  • Be able to detect player states such as "on ground", "up against wall", "touching a ceiling", etc.

As an initial implementation, I was thinking of taking the collision system from a recent game engine of mine, seen here: https://www.youtube.com/watch?v=-XlgEY9RcSk. Annoyingly, it can require quite a lot of collision tests to resolve a collision though.

Does anybody have any thoughts?

Unable to connect to official veloren server

Im cant join the Veloren server. I get this message only trying to connect to the server. Singleplayer works fine. No errors. Im using Flatpak. Mar 30 12:39:02.878 WARN veloren_client: Server is running 5ccbfba8[2021-03-30], you are running c8e191e1[2021-03-29], versions might be incompatible! Mar 30 12:39:04.370 INFO veloren_common_sys::plugin: Searching "/app/share/veloren/assets/plugins" for plugins... Mar 30 12:39:04.370 ERROR veloren_common_sys::state: Failed to read plugins from assets e=Io(Os { code: 2, kind: NotFound, message: "No such file or directory" }) Mar 30 12:39:04.370 INFO veloren_common_sys::state: Error occurred when loading plugins. Running without plugins instead. Mar 30 12:39:05.331 ERROR veloren_voxygen::menu::char_selection: [char_selection] Failed to tick the client err=StreamErr(Deserialize(Custom("invalid value: integer 1130889216, expected variant index 0 <= i < 15"))) Mar 30 12:39:05.354 INFO network{p=tqg69B}::remote{p=UbQ5z6}:recv: veloren_network::participant: protocol failed, shutting down channel e=Closed cid=0 Mar 30 12:39:05.366 INFO network{p=tqg69B}:network{p=tqg69B}:remote{p=UbQ5z6}: veloren_network::api: Participant already has been shutdown gracefully Mar 30 12:39:05.368 WARN network{p=tqg69B}: veloren_network::api: Runtime seems to be dropped already e=Sender { inner: Some(Inner { state: State { is_complete: false, is_closed: false, is_rx_task_set: false, is_tx_task_set: false } }) }

[Task] Implement command dispatch for server

Commands will come in under ClientPacket::SendCommand and should be dispatched in a manner that handlers can be written for each command and extended by modders in the future.

Commands will need access to a set API from the server which will need to include the player and perhaps the world.

Create a Persistent Storage API for Server

Create a API what allows server to offload/save parts of his information (per chunk) via a Storage API.
This storageapi should support multiple backends: file, sqllite, postgres later on

Implement a verbose job system

More details about this proposal can be found here: https://github.com/veloren/game/wiki/Architecture-And-Network-Messaging-Proposal

The new job system would:

  • Allow concurrent operations to be programming in a readable, verbose, and simple way

  • Provide a single 'one true' way to perform concurrent tasks across the codebase without a different implementation needing to be written for each one.

This proposal is strongly tied to the post messaging proposal [clarification needed].

Things to address:

  • Does this integrate well with an ECS?

  • Does this cause potential deadlocks, or not have the features necessary to implement certain parts of the codebase as they exist today?

Suggestions, comment and discussion is very welcome on this topic.

Manually select nvidia gpu

Hey there,

thanks for this project. I would really like to play it and further develop it but I am using Arch Linux with an Intel and Nvidia gpu. I would like to manually select which gpu should be used.

Thanks for any kind of help.
IJustDev

Tracking issue for cache-driven network changes

Things that need doing:

  • Rename Connection to MsgMgr
  • Make MsgMgr use Conn internally
  • Consider genericising Conn to allow for TCP and UDP sockets (low priority)
  • Use interior mutability to avoid excessive use of Arc

BUG black screen when cloud setting > minimal

As mentionned in the discord chat today :

Mac os : Catalina 10.15.7

Terminal msg when changing to unsupported cloud setting : [INFO] [Veloren] Nov 07 22:42:29.524 WARN gfx_device_gl::shade: Log: WARNING: Could not find fragment shader output 'Target2' to match FragDataBinding request.

Black screen description :

Happening from the character selection window to the ingame.
Everything is black as if it was night but it isn't. bag items maps windows or chat show normally.

The texture and environement is showing normally when changing the cloud setting to "low" or "none".

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.