Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (797)
Games in Android Showcase (234)
games submitted by our members
Games in WIP (864)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: 1 ... 90 91 [92] 93 94 ... 213
  ignore  |  Print  
  What I did today  (Read 3401187 times)
0 Members and 3 Guests are viewing this topic.
Offline pitbuller
« Reply #2730 - Posted 2015-08-21 20:20:56 »

Accidentally plugged node to wrong plug and computer just hard crashed. Infinite loop. Coding with ue4 Blueprints feels like doing bungee jumping with cord that is plait from spaghetti.
Offline J0
« Reply #2731 - Posted 2015-08-21 20:52:41 »

Zeldar, are you planning on adding any kind of double wielding to your game? Pointing

Offline Zeldar
« Reply #2732 - Posted 2015-08-21 21:21:18 »

Zeldar, are you planning on adding any kind of double wielding to your game? Pointing

I had this idea in my head, thing like having several weapons types in the game, but I don't know how I would handle it, there will be hundreds of spells in the game and for example a spell that make you do a super-big strike with your weapon and you are carrying a staff, or dual wielding swords, how will it looks like?

The thing is that before having acces to spells you have to chosse one of the 8 masteries (like fire, combat, holy, assassin, etc...) after it's done you can choose spells that the mastery gave you (it was holy on this video  Pointing ) so maybe the type of weapon depends on the mastery you have chosen? Thats a possibility, there is the ice, fire and dark masteries which are more ranged oriented playstyle so I let them have a sword instead of a staff to let them be able to do something in melee combat  Pointing

edit: Actually, I will make a weapon type for each mastery! combat will have double axe, earth will have a hammer, and so on so that it reflect the playstyle !
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Opiop
« Reply #2733 - Posted 2015-08-22 07:29:06 »

I forced myself to finally sit down and give NodeJs + Express a serious try, and I think I did pretty good! I've got a backend that can pull down data from a MongoDB instance and then some custom routing and I figured out how to create modules etc.. Also Jade isn't as big a pain as I thought it would be, it's actually pretty nice for writing "shorthand" HTML.
Offline theagentd
« Reply #2734 - Posted 2015-08-22 14:43:44 »

Pretty much finished converting WSW to using JOML instead of LibGDX. Excellent library. Faster implementations, thread-safety out-of-the-box, smaller. Still awaiting a few features to be able to finish it and see how broken it is. =P

Did some profiling now that skeleton animation is over twice as fast thanks to JOML and found a physics bottleneck. The physics simulation uses a 2D grid to quickly find nearby bodies for collision detection. Each "tile" in the grid is just a list of bodies that are in that grid. To query nearby bodies, you pass in a position and a radius, and the grid returns all bodies that intersect the square the position+radius forms (circle test is too expensive). Since the grid tile size is bigger than the bodies, each body generally only needs to check 1 tile, or 2 or 4 if the query area extends across a grid boundary. While doing some optimizations getting rid of some unnecessary divides, I realized that there was a bug in there that expanded the search area by 1 tile in each dimension, meaning a 1x1 check turned into a 2x2, and a 1x2 check turned into a 2x3. This had a huge impact on performance as it basically does 2-4x as much work. In combination with getting rid of a few divides, Math.floors() and Math.ceils(), I almost managed to double the body-body collision testing performance.

Myomyomyo.
Online EgonOlsen
« Reply #2735 - Posted 2015-08-22 16:51:57 »

Today, I added the character creation part to my RPG. There won't be a free character creation but the stats will be defined by five questions that you have to answer when starting a new game.
These questions work as a kind of exposition dump as well. They introduce the player to the character's back story and his/her motivation.
Answering them will add some points to one (or more) of the char's attributes (or even decrease some slightly in some cases) depending on your answer. Here's a screen shot of the german language version:


Offline pitbuller
« Reply #2736 - Posted 2015-08-22 21:51:35 »

Pretty much finished converting WSW to using JOML instead of LibGDX. Excellent library. Faster implementations, thread-safety out-of-the-box, smaller. Still awaiting a few features to be able to finish it and see how broken it is. =P

Did some profiling now that skeleton animation is over twice as fast thanks to JOML and found a physics bottleneck. The physics simulation uses a 2D grid to quickly find nearby bodies for collision detection. Each "tile" in the grid is just a list of bodies that are in that grid. To query nearby bodies, you pass in a position and a radius, and the grid returns all bodies that intersect the square the position+radius forms (circle test is too expensive). Since the grid tile size is bigger than the bodies, each body generally only needs to check 1 tile, or 2 or 4 if the query area extends across a grid boundary. While doing some optimizations getting rid of some unnecessary divides, I realized that there was a bug in there that expanded the search area by 1 tile in each dimension, meaning a 1x1 check turned into a 2x2, and a 1x2 check turned into a 2x3. This had a huge impact on performance as it basically does 2-4x as much work. In combination with getting rid of a few divides, Math.floors() and Math.ceils(), I almost managed to double the body-body collision testing performance.


What kind of perfomance scaling you have with increasing tile size. Many times I have found that making tiles much bigger than bodies is net win. Basically it increases number of hit test but fits cache much better.
Offline Riven
Administrator

« JGO Overlord »


Medals: 1369
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #2737 - Posted 2015-08-22 21:58:08 »

I once has this grid that was self-adjusting. Every N frames it would either grow or shrink in cell size, and measure performance differences. It would converge to the optimal solution, and then adjust itself when the environment changed, and converge to the new optimal solution. Give it a try, it is easy to implement.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings!
Offline wessles
« Reply #2738 - Posted 2015-08-23 06:29:54 »

Pretty much finished RFLEX. Submitted it to Valve for approval.


That date could be wrong.

Yawn Woot.

-wes
Offline MrPizzaCake

Senior Devvie


Medals: 8
Exp: 3 years


Hello, another wonderful human being :)


« Reply #2739 - Posted 2015-08-23 12:22:21 »

Pretty much finished RFLEX. Submitted it to Valve for approval.

Yawn Woot.

-wes
Awesome! Wish you luck with the review Smiley (Altough, they released even Grass Simulator, or Dream (#walkingSimulator), so, you may not even need luck Tongue )

How am I? Tough question, since emotions are confusing as heck Tongue
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline theagentd
« Reply #2740 - Posted 2015-08-23 12:46:44 »

I implemented forking in my threading system, which I plan to use to optimize culling and other things.

My threading system is based a task hierarchy where some tasks are dependent on other tasks and can only be run after the task they depend on have finished running. If there is no dependency between two tasks, then they are allowed to run in parallel on multiple threads. In addition, each task can be split up into a number of subtasks that can execute in parallel. This is what allows the physics and graphics of WSW to be fully threaded and utilize any number of CPU cores.

Although this system is perfect when you know what work you want to do (update X physics bodies, calculate Y skeletons, etc), there are times when it is a bad fit for the problem. In the case of frustum culling objects, I use either quadtrees or octrees, and traversing an octree in one thread is pretty slow. At the same time, we have no idea how many objects we will actually find (that's why we're culling!), so how many threads we should be using depends on the data structure in question.

A good solution is to use "forking", which means that when a thread realizes it has a lot of work to do, it splits it up and hands over some of it to other threads. However, my threading system did not support that. The easiest solution would've been to create a a task with a certain number of subtasks and have them wait for the main task to generate work for them. This is inefficient though, as that locks up the threads (they're waiting for work) when they could be working on other tasks.

Instead I added support for proper forking, where a task can dynamically generate additional subtasks of itself while it's running. That means that once a subtask realizes that it has a lot of work left, it can fork itself to generate new subtasks that it can hand over part of the work to, which the worker threads will automatically pick up, execute and finish, freeing them up to work on other things again.

I wrote a small test program that tries it out. It basically has a task that forks itself 8 times, each fork sums up 5 000 000 Math.sin() calculations and then prints out the result. Here's the output of running it with a single-threaded executor:
Quote
Executing task tree.
Main task reporting. Forking 8 times.
Forking complete.
Fork 0 reporting.
1.6005898759895323
Fork 1 reporting.
1.6005898759895323
Fork 2 reporting.
1.6005898759895323
Fork 3 reporting.
1.6005898759895323
Fork 4 reporting.
1.6005898759895323
Fork 5 reporting.
1.6005898759895323
Fork 6 reporting.
1.6005898759895323
Fork 7 reporting.
1.6005898759895323
Task tree execution finished in 8.014 seconds.
Note how the main task forks itself 8 times, then after the main task is finished it picks up the forked subtasks and processes them one by one. The power here lies in the ability to dynamically generate any number of forks.

Here's the same program running with a multithreaded executor with 8 threads (I have a Hyperthreaded quad core CPU, so 8 logical cores):
Quote
Executing task tree.
Main task reporting. Forking 8 times.
Fork 0 reporting.
Fork 2 reporting.
Fork 1 reporting.
Fork 6 reporting.
Forking complete.
Fork 5 reporting.
Fork 4 reporting.
Fork 3 reporting.
Fork 7 reporting.
1.6005898759895323
1.6005898759895323
1.6005898759895323
1.6005898759895323
1.6005898759895323
1.6005898759895323
1.6005898759895323
1.6005898759895323
Task tree execution finished in 1.565 seconds.
There are some interesting points here. Note that the forks start running as soon as they're created, and 4 forks even started executing before all forks have been issued. The forks then all execute in parallel on multiple threads, in contrast to the serial execution of the single threaded executor. Since they're calculated in parallel using multiple cores, the task tree finishes execution in 1/5th as long time.

I plan to use this for frustum culling. Currently the frustum culling is threaded per "view", which means that each camera and shadow map is calculated in parallel, but this is a very uneven workload. The camera is usually much much more expensive to cull for leading to one subtask taking much longer time to finish than the others. With this forking system, big views can be split up into multiple smaller jobs while small views that are cheap to cull can avoid the overhead of forking and synchronization.



I once has this grid that was self-adjusting. Every N frames it would either grow or shrink in cell size, and measure performance differences. It would converge to the optimal solution, and then adjust itself when the environment changed, and converge to the new optimal solution. Give it a try, it is easy to implement.
Probably too much work. We'll just tweak it to a good value. Really interesting idea though.

Myomyomyo.
Offline CommanderKeith
« Reply #2741 - Posted 2015-08-23 13:06:07 »

I once has this grid that was self-adjusting. Every N frames it would either grow or shrink in cell size, and measure performance differences. It would converge to the optimal solution, and then adjust itself when the environment changed, and converge to the new optimal solution. Give it a try, it is easy to implement.

That's an interesting idea. But how did you measure performance? Using System.nanoTime()?
If so, how would you know that the CPU your thread was being processed by didn't switch to another thread mid-way between a timing?
Did you cull outliers and average timings, hoping the effect would be averaged out?

Offline Riven
Administrator

« JGO Overlord »


Medals: 1369
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #2742 - Posted 2015-08-23 14:06:47 »

My impression is that here are no optimal values, as we have different CPU brands, controllers, generations, frequencies - same applies for RAM. Then you have all permutations of those. Each system will have its own sweetspot. Redistribution of entities over cells is a relatively cheap operation, as it is O(n), and the operation is cache friendly, as you use a more or less ordered dataset to fill another ordered dataset.

Lets say you adjust the cellsize every 20 frames (3Hz). Then you have a dataset of avg performance over the last 20 frames, and the avg performance over the 20 frames before that. If the performance improved, make the same change you did last time (grow or shrink cell size),  if performance degraded, do the opposite. Outliers will have been averaged out (with 20 frames, their effect is 5%). In the grand scheme of things it is not even bad to guess wrong quite frequently anyway. It will converge back to a more optimal cell size within the next second or so.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings!
Offline ags1

JGO Kernel


Medals: 367
Projects: 7


Make code not war!


« Reply #2743 - Posted 2015-08-23 16:26:25 »

@theagentd, how many cells and how many entities are being handled?

In Vangard, got logic millis down from 25ms to 16ms (unrelated to the above discussion).

Offline Icecore
« Reply #2744 - Posted 2015-08-23 21:14:55 »

@theagentd, how many cells and how many entities are being handled?
Someone try CCD Rigbody physical base collision?
http://www.stencyl.com/help/view/continuous-collision-detection/
https://developer.nvidia.com/sites/default/files/akamai/physx/Manual/Advanced.html
its sound stupid, but it looks like: you can use it to process collision on 100+ frames forward.
(in close system without player external input)

up:if take close dimension system (game closed room or lvl)
and calculate objects moves by frame ticks (not physical PC time)
then in theory (i think ^^) you can calculate collision forwards
+ if use some sort cached "time_frame positions, time_frame velocity"
it will be fast to calculate any external collisions changes that created by player input.
but maybe its all my madness =)

Last known State: Reassembled in Cyberspace
End Transmission....
..
.
Journey began Now)
Offline Opiop
« Reply #2745 - Posted 2015-08-24 17:15:59 »

Wow, what a day I'm having so far!

I finally went to lunch with my boss and after we talked a little he said that he and the other bosses have noticed the work I'm putting in and I've made a lot of fans here. My boss said he's going to fight and push everyone to try to get me a job here, and I should know relatively soon because my last day here is this Friday. I'm optimistic and although I would've preferred an answer today, I'm very grateful and happy about what my boss said. Here's to hoping in a couple of days I will be a fully employed software developer!
Offline wessles
« Reply #2746 - Posted 2015-08-24 18:04:16 »

Found this today.



Then found out I had to go somewhere, so I can't release today Tongue. Still though, It's cool to see my goal for the past year on-screen and ready to be clicked!

-wes
Offline kingroka123
« Reply #2747 - Posted 2015-08-24 20:57:33 »

Got Tupper's Self Referential Formula Working  Grin

(top right is graphed from the "K" value generated from the grid tiles)
Offline DarkCart

JGO Kernel


Medals: 124
Projects: 9
Exp: 50 years


It's all in the mind, y'know.


« Reply #2748 - Posted 2015-08-25 01:23:11 »

Wahey, looks like my game "Miners" is going to be on Indie Insights!

https://twitter.com/Highsight/status/635955696824156162

The darkest of carts.
Offline wessles
« Reply #2749 - Posted 2015-08-25 05:41:00 »



My dreams are becoming realized.

RFLEX: Coming soon.

-wes

EDIT:
Don't let your dreams be dreams! *flex*

EDIT 2:
Mwahahaha...

Offline BurntPizza

« JGO Bitwise Duke »


Medals: 486
Exp: 7 years



« Reply #2750 - Posted 2015-08-25 05:43:27 »

Wes the man, not letting his dreams be dreams.
There's your 200th medal.
Offline Opiop
« Reply #2751 - Posted 2015-08-25 13:02:10 »



My dreams are becoming realized.

RFLEX: Coming soon.

-wes

EDIT:
Don't let your dreams be dreams! *flex*
Can I just say... I've seen you grow up so much and I'm your biggest fan!  Wink

Congrats, hope it all goes well!
Offline Icecore
« Reply #2752 - Posted 2015-08-25 14:57:00 »

Wahey, looks like my game "Miners" is going to be on Indie Insights!
Congrats!

Don't let your dreams be dreams! *flex*
+

Last known State: Reassembled in Cyberspace
End Transmission....
..
.
Journey began Now)
Offline basil_

« JGO Bitwise Duke »


Medals: 418
Exp: 13 years



« Reply #2753 - Posted 2015-08-25 16:41:41 »

i've uploaded another flick to youtubes. it's pretty old, nothing special.

https://www.youtube.com/watch?v=6nyPlZSNosk
<a href="http://www.youtube.com/v/6nyPlZSNosk?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/6nyPlZSNosk?version=3&amp;hl=en_US&amp;start=</a>
Offline Opiop
« Reply #2754 - Posted 2015-08-25 17:59:10 »

Let's all take a moment... and realize my title is now Junior Developer for Cardinal Commerce. Full time developer! Cheesy
Offline DavidBVal
« Reply #2755 - Posted 2015-08-25 18:03:54 »



My dreams are becoming realized.

RFLEX: Coming soon.

-wes

EDIT:
Don't let your dreams be dreams! *flex*

Way to go, man. Keep opening a path, we all coming behind! Smiley

Offline J0
« Reply #2756 - Posted 2015-08-25 18:57:06 »

That moment when there are too many new posts who deserve a medal and you don't know to whom you should give it persecutioncomplex I guess I'm just going to go ahead and randomize that a little Grin

Offline wessles
« Reply #2757 - Posted 2015-08-25 21:21:59 »

i've uploaded another flick to youtubes. it's pretty old, nothing special.

https://www.youtube.com/watch?v=6nyPlZSNosk
<a href="http://www.youtube.com/v/6nyPlZSNosk?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/6nyPlZSNosk?version=3&amp;hl=en_US&amp;start=</a>

Sweet music for this.
Offline basil_

« JGO Bitwise Duke »


Medals: 418
Exp: 13 years



« Reply #2758 - Posted 2015-08-25 22:01:43 »

cheers! that goes to https://en.wikipedia.org/wiki/Towa_Tei .. who's hopefully fine with that upload.

uploaded another flick. testing gl capture without frame drops. looks pretty smooth to me.

https://www.youtube.com/watch?v=snVWrKpaNSA
<a href="http://www.youtube.com/v/snVWrKpaNSA?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/snVWrKpaNSA?version=3&amp;hl=en_US&amp;start=</a>
Offline ags1

JGO Kernel


Medals: 367
Projects: 7


Make code not war!


« Reply #2759 - Posted 2015-08-25 22:40:32 »

Finally completed a full economic cycle. Entities search for resources to harvest, move to the resources, harvest the resources, select a manufacturing process (checking available tools, skills and materials), produce sellable product, select a marketplace, transport goods to market, and collect payment, then return to harvesting spot to continue producing their product. And it is all done in generic, pluggable logic.

Pages: 1 ... 90 91 [92] 93 94 ... 213
  ignore  |  Print  
 
 

 
hadezbladez (3666 views)
2018-11-16 13:46:03

hadezbladez (1309 views)
2018-11-16 13:41:33

hadezbladez (3673 views)
2018-11-16 13:35:35

hadezbladez (706 views)
2018-11-16 13:32:03

EgonOlsen (4017 views)
2018-06-10 19:43:48

EgonOlsen (4543 views)
2018-06-10 19:43:44

EgonOlsen (2701 views)
2018-06-10 19:43:20

DesertCoockie (3568 views)
2018-05-13 18:23:11

nelsongames (3718 views)
2018-04-24 18:15:36

nelsongames (4748 views)
2018-04-24 18:14:32
Java Gaming Resources
by philfrei
2019-05-14 16:15:13

Deployment and Packaging
by philfrei
2019-05-08 15:15:36

Deployment and Packaging
by philfrei
2019-05-08 15:13:34

Deployment and Packaging
by philfrei
2019-02-17 20:25:53

Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08

Deployment and Packaging
by gouessej
2018-08-22 08:03:45
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!