Git Product home page Git Product logo

warriorssnuggery's People

Contributors

abc013 avatar abcdefg30 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

abcdefg30 sahwar

warriorssnuggery's Issues

Add glitter to water

Also when actors are hovering over it, it should spawn special wave particles.

Redesign UI and use as much space as possible

Currently, the menus are pretty compact and do not use the extra space they could have.
Also, margins and image scales are not lined up perfectly and the keyboard settings menu would need a redesign asap.

I am currently looking for ideas.

Linux version doesn't start/work

publish_linux_x64$ ./WarriorsSnuggery 
Loading...Ouch! An error occurred.
For more details, please check out the logs (located in 'WarriorsSnuggery/logs/').
Please report the issue to https://github.com/abc013/WarriorsSnuggery or contact abc013.
Thank you!
Unhandled exception. System.IO.FileNotFoundException: Unable to find the specified file.
   at System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename)
   at WarriorsSnuggery.Graphics.FontManager.Load() in C:\Users\Meredith McKay\source\repos\WarriorsSnuggery\WarriorsSnuggery.Game\Graphics\Font\FontManager.cs:line 19
   at WarriorsSnuggery.Window.OnLoad() in C:\Users\Meredith McKay\source\repos\WarriorsSnuggery\WarriorsSnuggery.Game\Window.cs:line 137
   at OpenTK.Windowing.Desktop.GameWindow.Run()
   at WarriorsSnuggery.Program.run(String[] args) in C:\Users\Meredith McKay\source\repos\WarriorsSnuggery\WarriorsSnuggery.Game\Program.cs:line 101
   at WarriorsSnuggery.Program.Main(String[] args) in C:\Users\Meredith McKay\source\repos\WarriorsSnuggery\WarriorsSnuggery.Game\Program.cs:line 38
Aborted (core dumped)

crash when starting

Game crashes, when trying to start. The playtest is specified for a special audio software, which I would like to be undone ^.^.'. I tried it with every selectable audio-ouput on my device, getting the same error. Version 1.4 still works for me, so one of the new mechanics seems to make the difference here.

exception log:

openal32.dll
System.DllNotFoundException: openal32.dll
bei OpenTK.Audio.AudioContext.CreateContext(String device, Int32 freq, Int32 refresh, Boolean sync, Boolean enableEfx, MaxAuxiliarySends efxAuxiliarySends)
bei OpenTK.Audio.AudioContext..ctor(String device)
bei WarriorsSnuggery.Audio.AudioDevice..ctor()
bei WarriorsSnuggery.AudioController.Load()
bei WarriorsSnuggery.Window.OnLoad(EventArgs e)
bei OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
bei WarriorsSnuggery.Program.run()
bei WarriorsSnuggery.Program.Main()

debug log:

SHADER 1 locations: 0, 1, 2, 3;
SHADER 2 locations: 0, 1, 3, 4;
SHADER 3 locations: 0, 1, 3, 4;
SHADER 4 locations: 0, 1, 3, 4;
SHADER 4 shadowloc: 5

performance log:

61ms <- Configuring GL
133ms <- Loading Fonts

Even after installing the required software the game crashes - this time without exception nor entry in its log.

debug log:

SHADER 1 locations: 0, 1, 2, 3;
SHADER 2 locations: 0, 1, 3, 4;
SHADER 3 locations: 0, 1, 3, 4;
SHADER 4 locations: 0, 1, 3, 4;
SHADER 4 shadowloc: 5

performance log:

55ms <- Configuring GL
122ms <- Loading Fonts
585ms <- Loading Sound

GC always called in background

This is due to the changes in the rendering system, which is discarding, allocating and saving huge amounts of data per render. This whole thing is happening here:

public virtual void PushToBatchRenderer()
{
if (!Visible)
return;
if (MatrixChanged)
{
var t2 = Matrix4.CreateTranslation(Position.X, Position.Y, Position.Z);
var r1 = Matrix4.CreateRotationX(Rotation.X);
var r2 = Matrix4.CreateRotationY(Rotation.Y);
var r3 = Matrix4.CreateRotationZ(Rotation.Z);
var s1 = Matrix4.CreateScale(Scale);
var matrix = r1 * r2 * r3 * s1 * t2;
Calculated = new Vertex[Vertices.Length];
for (int i = 0; i < Vertices.Length; i++)
Calculated[i] = Vertices[i].Apply(matrix, Color);
MatrixChanged = false;
}
MasterRenderer.BatchRenderer.Add(Calculated);
}

Calculated is the reference that is causing this issue.

Improve batched renderer

  • Motivation: The current renderer model does not only hold both raw and calculated vertices in memory, but also a matrix. The CPU is used to make calculations with the modelMatrix, which should be done on the GPU. This leads to
    1. more GC calls
    2. more CPU usage
  • Proposed solution: Store raw vertex data on the GPU in batches. Renderable structures only save buffer ID, offset and length of data as well as the matrix. Once called to render, the matrix is pushed into the GPU and the batch renderer renders the vertices with the specified offset. This saves a) the memory/GC problem b) the matrix calculation provlem
  • Disadvantages: This basically makes batched renderers unnecessary. Also, it is not quite sure what happens once certain vertices are not needed. However, one has to be reminded that every vertex buffer basically is used by the game, as data structures are static and do not change often.

DocWriter: full table of contents list

Currently, the index of the documentation only shows the major headers. It would be nice to also see the other headers, which would improve general oversight of the documentation.

Crash when using Marshal.Copy

Marshal.Copy(data.Scan0 + scanline * stride, scan, 0, stride);

where scanline is 7, width and height is 8, stride is 128 and scan is a float[128].
So everything should be fine??

Improve texture sheet usage

Right now, the algorithm to create the texture sheets is very unpolished and leaves large gaps of unused pixel data. This can be increased by smarter sorting of the textures, perhaps splitting the whole buffer into smaller pieces (e.g. 24x24px pieces and lower) and filling it up by taking the smallest available piece.

Improve messy savegame system

The savegame system is still a whole mess. For example, spells are not saved, weapons and states of some traits.
This could be improved by adding a save and load function for traits and use them to store relevant information.
Weapons would become a new section with standart information.

Relations between actors should be completed via the currently actorIDs stored in actors. IDs used in map saves should be replaced by those.

Effect upgrade

  • Rename effects to spells
  • To activate effects, use key combinations
  • Improve tooltip usage
  • Buy: Show description of spell

Improve world generation

A few sketches of how the generation should look like. The debug output should also be almost the same.

  • Pathgenerator
    Nodes are placed on the lowest values of the noise texture. One per side and optional ones in the center or at key points such as villages, entries and exits
    grafik

  • Terraingenerator
    A noise texture and a value range is given to select the area where the terrain should be generated.
    grafik

  • Structuregenerator
    A noise texture and a value range is given to determine areas where structure can be generated. Same with towns.
    grafik

Noise textures can be selected via extra numbers, so multiple can exist and selected. They are always normalized from 0-1.

In debug, the noise texture is now shown as greyscale background, while the selected tiles are displayed in color.

Add Multiplayer support

Describe the feature you'd like
Add multiplayer support using servers and a architecture that allows to join midgame. Servers are included in the game itself.

Describe alternatives you've considered
If midgame-joining is not possible, use lobbies instead.

Additional context
See this WIP branch.

My current proposal is that commands are sent by the players to the server. The server gathers all commands in each tick, processes them and returns the new world state (more exact: the difference to the last one). This is also used if a new client wants to join: just send the current world state.

Downsides
It will make the code a lot more complex.

Rendering, Animation ticks and ticks need to be separated.

There are still a few questions open:

  • What about local games?
  • Latency problems: Without simulation, an average internet game will take up to ~100ms.
  • What about poor client connections? The server would wait until the commands for the current tick arrive. This may not be the best idea. Instead, one could just assume that the client sent nothing and continue ticking. If the request comes a bit later, then process it in the corresponding tick. If the requests take too long, drop the client. However, this opens another can of worms: How do we determine the latency? What about missing world states? etc.

Recreate weapon logics and split in to four categories

Workplan as follows:

1. Basics

  • Rework weapon.cs and weapontype.cs
  • Remove missile weapons
  • Add 3D collision logic for weapons
  • Never let weapons join physic sectors

2. Add/Rework the weapon types

  • Add direct-hit weapon
  • Rework bullet weapon to be more logical (e.g. cannon-like)

3. Aftermath

  • Add possibility to highlight creatures when hit, possibly remove the damage counter will be dealt with in future
  • Make attack animations possible
  • Add pre- and post-hit delay
  • Add smudgelayer

The categories are:

  • Instant hit
  • Bullet
  • Beam
  • Magic (like missiles, with more turbulence)

Targeting system

After 3D-collisions are now a thing, it gets harder to target actors. A targeting system should be added to visualize the aimed target and to adjust the height of the target to make it easier to hit something again.

Support custom Warhead Falloff curves

E.g. giving values from 1.0 to 0.0, between every number a distance like 1024.
This would look like this:

Falloff=1.0, 0.9, 0.1, 0.4, 0,3, 0.0

And falloff values ingame (with linear interpolation):

Cell distance 0 512 1024 1536 2048 3072 4096 5120 6144
Damage Multiplier 1.0 0.95 0.9 0.5 0.1 0.4 0.3 0.0 0.0

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.