Code Monkey home page Code Monkey logo

ore-infinium's Introduction

Ore Infinium

licenseLibGDXKotlin

Build Status

Ore Infinium, an open source multiplayer Terraria-inspired Sci-fi game written in Kotlin, with a special focus on in-game tech devices, energy generation/consumption, resources gathering and the survival through using these things.

This is inactive. Lot of life mortality related things happened, especially when I turned 30. These days I'm more of an artist in the free time I have (photographer, musician)

World generation in the world Underwater air meter World generation Player in game

Inspired a lot by tekkit(now feed the beast) for minecraft, but I'm not a fan of its overwhelming complexity, although it has some really great gameplay ideas/mechanisms. I aim to incorporate some of these ideas, improve them where I can, improve the process and hopefully make it easier, less grueling and more fun.

I'm likely going to go the route of making energy consumption/production be a global thing. For example, placing a generator will increase your global energy generation rate/stats by that much. I'm most interested in having devices depend on resources, and use them to do neat things, assuming it doesn't make things too overwhelmingly complicated for someone like me. Having to manage fuel sources for generators, switch off devices when too much is being consumed (so that important devices like charging stations, which enable you to dig), and defenses, don't stop working.

Extremely early development!

Basically it's only a tech demo right now, no gameplay. Unless you count walking around gameplay. Then it's got lots of that.

It is planned and written for multiplayer but so far has only been tested local machine only.

It also will not have any lag compensation/prediction at all for a while until I get more functionality (functionality being more important, and lag compensation can be a bit of an after thought, as it is more time consuming and requires a lot of tuning)..not to mention the protocol will need to be optimized, eg things like block sending are very inefficient, as I work on getting other features in. It also currently spams packets like crazy, when it should be aiming for 20-30 packets/s each for client or server.

#Platforms All desktop platforms (which can run the JVM) (Linux with OpenJDK, Windows, macOS).

Requirements

You will need java 8 (jre 1.8) installed. OpenGL 3.0+ (shouldn't be difficult to meet, linux open source drivers usually meet that easily these days. Any integrated gpu in the past several years should support it).

Downloads/Builds

Regular releases are made (runnable jars) after every commit. See github releases

Simply execute it by clicking, or by command line with java -jar pathtojar

Notable Libraries used:

  • LibGDX(base cross platform game framework)
  • KTX (kotlin idiomatic wrappers around libgdx and friends)
  • artemis-odb (ECS (entity component systems) library)
  • KryoNet(networking library)
  • Scene2D.ui(GUI)**, part of libgdx
  • Joise(noise module chaining framework, for generating the game world in complex ways)
  • VisUI(further extends scene2d)
  • JCommander(command line parser)
  • gdx-ai(AI library)

Debugging/development and testing

If you wish to test and such, you'll probably want to enable assertions, as I use them all over the place to ensure consistent game state, and sane behavior. You must pass -ea ("enable assertions") to VM Options.

Should work with every IDE just fine. For IDEA, see: http://www.jetbrains.com/idea/help/setting-configuration-options.html

To build locally, just check out the code. It uses a submodule currently, for the assets. So run git clone update --recursive <the url>. If you've already checked out the main repo and forgot to run it with --recursive, you won't have the submodule located in ore-infinium/core/assets. So, do git submodule update --init --recursive

To build it with gradle, from the command line, run ./gradlew desktop:build (or just click that gradle task from your IDE. Build the executable jar with ./gradlew desktop:dist

I'm using Kotlin, so you can use Intellij IDEA or eclipse(if you download the plugin).

Be sure to set the working directory to the assets directory, or more easily, just invoke the desktop:run gradle task.

Command line arguments

There are some command line arguments that can be passed to it. Find them by running java -jar ./ore-infinium-and-what-not --help. Some of these switches are used for development, some are used for gameplay, testing etc.

License

Code is licensed as MIT, assets are(will be) licensed under permissive asset licenses. (CC0 mostly). See assets dir for more detailed license info.

ore-infinium's People

Contributors

antag99 avatar demoth avatar gitter-badger avatar sreich 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

ore-infinium's Issues

Improve tile water when falling

Make water when falling down, instead be totally solid and change opacity, or something else... This is a long term goal, low priority

Fix tree drops, add resource component eg coal

Needs a resource component, so you aren't literally picking up entire trees.

Create a resource component, so we can put wood, rubber that kind of thing. Should that be used for blocks dropped too?

initial NPC's

Create initial NPC functionality. Some very simple creature like a bunny maybe. Try using gdx-ai

The current event queue and the main event queue are not the same.

Hey, I'm interested in KTX so I saw your project and went to run the latest release but I got this error. I thought you might be interested!

On OSX

$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
$ java -jar Ore.Infinium-v0.1-20170822-100418-5312863.jar 
2017-09-22 20:24:05.156 java[7374:35433348] !!! BUG: The current event queue and the main event queue are not the same. Events will not be handled correctly. This is probably because _TSGetMainThread was called for the first time off the main thread.

Health functionality

Give the player a concept of health, UI and in code. This implies making something damage them too. Like Lava

fix item placement limits at 64

it's actually an array out of bounds (uncheccked component access iirc) issue silently waiting until you place 64 items...

Development?

Hi!
I am confused.
The build archive external page is empty.
Building the current release is not possible without some "tween-engine" which should be available from http://sreich.net - but the website as a whole is seemingly no longer existing.
But yet I see changes in the repo only a few days ago.

What is the status of this? Can I join and help?
Can you fix the dependencies fail?

All the best,
Noël

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.