Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411502 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 03:25:21 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsDiskophoros (local multiplayer laserdisc fighter, proc. gen. maps) [GIF heavy!]
Pages: 1 [2]
Print
Author Topic: Diskophoros (local multiplayer laserdisc fighter, proc. gen. maps) [GIF heavy!]  (Read 6415 times)
CosmicCastles
Level 0
**



View Profile
« Reply #20 on: January 22, 2018, 02:41:34 PM »

Really liking the graphics style. Congrats on having the willpower to pick up the project again.
Logged

Nikolas
Level 0
**



View Profile
« Reply #21 on: January 28, 2018, 04:23:26 AM »

Really liking the graphics style. Congrats on having the willpower to pick up the project again.
Thanks! Glad to hear you like my pixels Wink

Meanwhile I have been working on an interactive tutorial,
that should make the player familiar with the actions he is able to execute.
The tutorial will be fairly short, but if the player dies,
he will need to start from the beginning of the tutorial.
When playing the game with friends who never played before, you can let them play the tutorial first instead of just telling them:
"Button X does this, Button Y does that".

Here is a GIF of me walking through the tutorial:


The lesson texts embed the control binding of the player and I made a nice little fluent API to generate tutorial lessons:
Code:
public static final Lesson WALK_AND_JUMP_LESSON = new LessonBuilder("Lesson 1: Jump onto the platform")
.nl("Move ", PlayerInputComponent::getxAchsis, " to walk")
.nl("Press ", PlayerInputComponent::getJumpButton, " to jump")
.addArrow(new TutorialArrow(580, 300, Direction.DOWN))
.build();
Logged

tetherline
Level 0
**



View Profile
« Reply #22 on: January 29, 2018, 08:50:24 AM »

This is such a weird and interesting idea. I'm really curious to see how you develop it.
Logged

Nikolas
Level 0
**



View Profile
« Reply #23 on: February 05, 2018, 01:07:26 PM »

Hi Guys,
while I don't have to show new fancy images right now,
I have made some technical progress I want to share.

Backgrounds in Diskophoros stages can be animated. For that purpose the X and Y position of background assets can be described relative to the game time passed.
Just like this:

Code:
"xPos": "0-t*5",
"yPos": "60 + sin(t*2)*2",

This feature has been in the game for some time now. In the past I used MVEL,
a powerful expression language library for java, to compile these formulas after game startup and evaluate them passing the elapsed time as a parameter.
I disliked this dependecy, as MVEL was far to powerfull for my usecase
and made it possible to insert code through stage description files,
which may be a security issue in the future if users want to design their own stages.

I decided to create my own Formula representation with a really simple interface:

Code:
public interface Formula {

float eval(float t);

}

Which is implemented by a few classes: Constant, Time, BinaryOperator and UnaryOperator.
Now I needed a parser which could parse Strings into Formular objects.

Last time I wrote a parser, I wrote it in Haskell using the parsec library and was very happy with it.
parsec lets users write parsers for complex structures by combining simple parsers (decimal number, constant string, etc.)
using combinators (choice, between, sequence, etc.).

I fortunately found a similar parser library for Java: https://github.com/jparsec/jparsec
jparsec already offers a calculator parsing tutorial: https://github.com/jparsec/jparsec/wiki/Tutorial
The tutorial was easy to port to my formula representation and to expand with some custom functions (sin, abs, t).
The final parser fits into 57 lines of Java code and I am really happy with the result.

If you have to write a parser next time and its to complex to use regex, but not quite complex enough to justify using a grammar based generator like ANTLR, I recommend checking out a parser combinator library.
Logged

Nikolas
Level 0
**



View Profile
« Reply #24 on: April 07, 2018, 02:47:54 AM »

Hi guys,

there have been no update for some time now as I have been busy with work and university.
I am currently experimenting with procedural map generation for my bachelor thesis.
If I am able to produce good results, I want to include a maps generator in Diskophoros and have generated maps as a part of the game  Wink

The outputs of my prototype already looks promising. Here is one example:

blue = air, grey = solid, red = spikes, green = one-way-platform
Logged

Nikolas
Level 0
**



View Profile
« Reply #25 on: June 03, 2018, 05:34:24 AM »

As my bachelor thesis processes, the map generator does, too.
A lot of time has gone into reading literature and doing performance tweaking, to ensure the map generator will be fast enough, to generate maps on player demand. I learned alot about profiling in haskell this way.
I also implemented a PNG renderer which uses random color palettes:

Logged

Nikolas
Level 0
**



View Profile
« Reply #26 on: August 25, 2018, 03:53:51 AM »

Generation of map layouts is now almost complete and I have started to experiment with procedural texture generation:



My goal is to mimic the style of the maps I manually created before I started procedural generation and
apply different color palettes to them.
The first "style" I want to mimic is the one of the red map:

Logged

Nikolas
Level 0
**



View Profile
« Reply #27 on: August 26, 2018, 05:55:23 AM »

A short update to yesterdays post:
I took the background and the clouds of my manually created map and inserted the generated map texture.
I am very happy with the result and excited to share it Wink :


Logged

QOG
Level 3
***



View Profile WWW
« Reply #28 on: August 26, 2018, 05:13:10 PM »

Looking really nice! I'm interested to see how far you can go with procedural textures.
Logged
Nikolas
Level 0
**



View Profile
« Reply #29 on: August 28, 2018, 02:19:17 AM »

@QOG:
Thanks! I think the texture generator used for the screenshot of my last post (+ variations of the color palette) is far enough for me.
I would rather like to implement one or two additional texture generators, to generate different styles.
Logged

Nikolas
Level 0
**



View Profile
« Reply #30 on: August 31, 2018, 10:42:58 AM »

I have been working on generating textures which mimic the green map shown in the gameplay footage (https://youtu.be/7_qGsSETcZM?t=33).
For this purpose I experimented with Markov Chains (https://en.wikipedia.org/wiki/Markov_chain).
I used them to generate the outline/edges of my block textures.

For this purposes I took the slope of a block of the existing map as a dataset and let a haskell package  learn probabilities from it (http://hackage.haskell.org/package/markov-chain).
The package then provides functions to generate a sequence of values of arbitrary length, which resembles the dataset and can be converted into a new outline:



I hope to be able to show more progress in texture generation for the green map, soon  Wink
Logged

Nikolas
Level 0
**



View Profile
« Reply #31 on: September 04, 2018, 10:21:42 AM »

I have made progress with the texture generator of the jungle themed maps:

This texture has been procedurally generated and I am quite happy with it.
A backgroundimage is missing in this one, but I will just use the one I used for the manually created maps.

Next up I want to provide the possibility to use the texture generators with different color palettes (I think ths will be fun  Wink ) and make this behavior configurable using simple config files (this might be boring  Hand Thumbs Down Left ).
Logged

Nikolas
Level 0
**



View Profile
« Reply #32 on: September 08, 2018, 04:14:18 AM »

I have not found the time to implement different color palettes yet, but I worked a background image into the jungle themed map.
Here is a GIF featuring 4 generated maps, which were loaded into the game:
Logged

Nikolas
Level 0
**



View Profile
« Reply #33 on: June 08, 2019, 10:05:06 AM »

Hi all! Progress has been slow, but Diskophoros is not dead  Wink
I tweaked some stuff which I want to summarize in this entry.

The laser chain powerup got fancy new visuals:



I worked on a logo for the game:




The biggest change I have made is changing the colors of all the maps to share a palette of pastel colors.
Most of them can be seen in this short clip:





I would love some feedback on this, as it has heavy impact on the appearance of the game.

Going with the new pastel colors, I have also redesigned the menu screen:



Thank you for reading!
Logged

Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic