Hurray! Another multiplayer clone project. :)

Discuss and distribute tools and methods for modding. Moderator - Grognak
Post Reply
jrb00001
Posts: 201
Joined: Fri Jan 15, 2016 2:22 pm

Re: Hurray! Another multiplayer clone project. :)

Post by jrb00001 »

kcd.Spektor wrote:
jrb00001 wrote:It is written in Java, right? Why do you release only a Windows version? I use linux and I do not want to start a VM for a game which would otherwise be platform independent.
Right.
I've updated the archive - it should now contain jars as well.
It was a big surprise that I was able to run the original archive with

Code: Select all

java -jar Server.exe
But please use an other archive format than rar. If you want to be able to extract it without additional software use zip and if you want a good compression ratio use 7zip.
Cog wrote:Having local, in-system jumps seems to offer an extremely powerful cloak-like effect that is repeatable and free (unless it costs fuel each time, which I think if it exists, it definitely should.) Getting to dodge an entire salvo with 100% evade rate is actually stronger than level 1 cloak, which cost 150 scrap, or required playing the Stealth ship, which had no shields. Cloak is so strong (even only adding 60% evade) that those ships are generally some of the best starting ships for expert players, because you can wait until they fire their first salvo then just dodge it and charge your weapons the whole time, take out their weapons room and take no damage.
Yes, a in-system jump means dodging an entire salvo and also reassigning targeting for all weapons (yours also!). It does not have to be expensive, it has to take a long time. If a bigger ship needs more jump drives and engines, that would help balancing shields / evasion.
Cog wrote:It also seems like it would be almost impossible to destroy most ships in any kind of a balanced scenario (where defenses are usually approximately equal to offense,) because with all your initial defenses up (shields, cloak, defense drones, etc,) your jump drive can charge and you can just jump away in a random direction that without special sensors maybe, would be impossible to follow. I guess if the AI doesn't make use of that kind of hit and run tactic then it might be fine (they generally don't in FTL, other than occasionally fleeing or if an AI ship, blowing up,) but PvP would enable trolling very easily. Fire a full salvo on somebody and immediately jump away with your pre-charged jump drive.
If the jump drive takes about three minutes to recharge in a balanced design, that should not be possible. You could build a scout with only jump drives to escape within a single minute. You could also build a design with the focus on weapons / shields but then you would have to wait five minutes for a jump. A pre-charched jump drive must not be possible!
Cog wrote:Another random thought: What about having an elevator and a multi-floor ship? There are a lot of different ship systems in the game already, and if you add in teleporters, cloak, jump drives, who knows what else, even large ship designs might run out of room space. I feel like one way you could limit the number of weapons is to have certain rooms be specifically colored/marked as weapon hard-points, where only weapons can be attached to those rooms. There could even be 1x1, 1x2 and 2x2 weapon hard-points. Maybe possible to upgrade (read: purchase at store) hardpoint upgrades?

I feel ships may run out of rooms because of all the systems available, if that isn't designed around.
Great idea but it could be difficult to design a good 3d targeting interface. Maybe something like an on-ship teleporter would help with huge ships? The on-ship teleporter does not have a cooldown but requires two energy while active. It only allows to teleport to other active on-ship teleporters.

I would like to have other system sizes. Maybe 1x1, 1x3, 2x3 and 3x3 for smaller ships and something like 8x8 or 10x10 for huge capital ships? Bigger systems should be more efficient than smaller systems because they can not be used to fill corners.

How can I save? And how can I shutdown the server correctly? C-c stops the server but it does not save the universe.

Do you have a bugtracker somewhere? I found the first bug: It is not possible to run the server in a headless environment.

Code: Select all

Exception in thread "main" java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
	at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
	at java.awt.Window.<init>(Window.java:536)
	at java.awt.Frame.<init>(Frame.java:420)
	at javax.swing.JFrame.<init>(JFrame.java:233)
	at tk.spgames.spaceteamserver.GameServer.<init>(GameServer.java:146)
	at tk.spgames.spaceteamserver.GameServer.main(GameServer.java:536)
Do you need the empty window? If there is no reason for it, do not open it and the exception will be gone. If you need it to shutdown the server on windows, use something like

Code: Select all

if(System.console() == null) {
	showWindow();
}
to open the window only if no console is available. If you plan to use the window to do administrative tasks, you could use something like lanterna (https://github.com/mabe02/lanterna) which will run in a console and graphical environment.
The_Bear
Posts: 225
Joined: Mon Jan 04, 2016 5:57 pm

Re: Hurray! Another multiplayer clone project. :)

Post by The_Bear »

Make it so you can instead of jump around the sector, you fly around in your ship. How fast you fly should depend on how good your engines are, how big your ship is and maybe a system that let you maneuver easier.

Lasers should be used against big ships or when you fly close to the enemy. Lasers should also be very fast so you can't dodge them that easily.

You should also make all missiles to heat seeking missiles so that they follow their target.

And add the download link to the first post.
kcd.Spektor
Posts: 586
Joined: Thu Nov 26, 2015 8:21 am

Re: Hurray! Another multiplayer clone project. :)

Post by kcd.Spektor »

jrb00001 wrote:Yes, a in-system jump means dodging an entire salvo and also reassigning targeting for all weapons (yours also!). It does not have to be expensive, it has to take a long time. If a bigger ship needs more jump drives and engines, that would help balancing shields / evasion.
It does take quite some time.
And will be configurable.
jrb00001 wrote:If the jump drive takes about three minutes to recharge in a balanced design, that should not be possible. You could build a scout with only jump drives to escape within a single minute. You could also build a design with the focus on weapons / shields but then you would have to wait five minutes for a jump. A pre-charched jump drive must not be possible!
When you enter new sector map - your hyper drive is nearly empty.
But engines could be precharged - because otherwise you might jump into a sector where some other player is camping and he has his engines charged. :)
I would like to have other system sizes. Maybe 1x1, 1x3, 2x3 and 3x3 for smaller ships and something like 8x8 or 10x10 for huge capital ships? Bigger systems should be more efficient than smaller systems because they can not be used to fill corners.
Technically I think you can do that right now.
But there are only layout images for 1x2, 2x1 and 2x2 size systems.
How can I save? And how can I shutdown the server correctly? C-c stops the server but it does not save the universe.
Just close the server app with alt+f4 or click the cross.
Do you have a bugtracker somewhere?
Nope
I found the first bug: It is not possible to run the server in a headless environment.
True. I didn't test it like that.
Do you need the empty window? If there is no reason for it, do not open it and the exception will be gone. If you need it to shutdown the server on windows, use something like

Code: Select all

if(System.console() == null) {
	showWindow();
}
Thanks. Will try this. :)
to open the window only if no console is available. If you plan to use the window to do administrative tasks, you could use something like lanterna (https://github.com/mabe02/lanterna) which will run in a console and graphical environment.
or this :)
kcd.Spektor
Posts: 586
Joined: Thu Nov 26, 2015 8:21 am

Re: Hurray! Another multiplayer clone project. :)

Post by kcd.Spektor »

The_Bear wrote:Make it so you can instead of jump around the sector, you fly around in your ship. How fast you fly should depend on how good your engines are, how big your ship is and maybe a system that let you maneuver easier.
Lasers should be used against big ships or when you fly close to the enemy. Lasers should also be very fast so you can't dodge them that easily.
You should also make all missiles to heat seeking missiles so that they follow their target.
It would be too hard to implement.
I had this idea initially, but dropped it because of difficulty/time.
And add the download link to the first post.
It's in the second where the ToDo list is.
Perhaps I should interchange them.
jrb00001
Posts: 201
Joined: Fri Jan 15, 2016 2:22 pm

Re: Hurray! Another multiplayer clone project. :)

Post by jrb00001 »

Cog wrote:
10. When the game resizes due to scrolling in and out, it would be great if the re-sizing algorithm was something higher quality than nearest neighbor. Would be great if it was something higher than bilinear too, though I have no idea how costly that would be in terms of cpu cycles, to do bicubic/spline/lanzcos resize)
Definitely not something I will work on anytime soon :)

-----
Well okay... I assume there's an codebase limitation here. Even bilinear would be a huge improvement, and is sort of the standard when you do anything 3d (which even 2d games almost always are, to make use of modern graphics hardware and transparency effects, right?) Is it possible even theoretically?
That should be very easy with libGDX:

Code: Select all

texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
kcd.Spektor wrote:
jrb00001 wrote:How can I save? And how can I shutdown the server correctly? C-c stops the server but it does not save the universe.
Just close the server app with alt+f4 or click the cross.
Please add a way to shutdown (or at least force-save) the server from the console.
kcd.Spektor wrote:
jrb00001 wrote:I found the first bug: It is not possible to run the server in a headless environment.
True. I didn't test it like that.
jrb00001 wrote:Do you need the empty window? If there is no reason for it, do not open it and the exception will be gone. If you need it to shutdown the server on windows, use something like

Code: Select all

if(System.console() == null) {
	showWindow();
}
Thanks. Will try this. :)
jrb00001 wrote: to open the window only if no console is available. If you plan to use the window to do administrative tasks, you could use something like lanterna (https://github.com/mabe02/lanterna) which will run in a console and graphical environment.
or this :)
I will open a internet server as soon as it works headless and there is a way to save. It would be good if the connect dialog would also accept dns names.

It looks like the drain of oxygen is too low. With all doors open and a destroyed O2 system it decreases by 10% per minute. And it does not decrease at all while nobody is on board.
kcd.Spektor
Posts: 586
Joined: Thu Nov 26, 2015 8:21 am

Re: Hurray! Another multiplayer clone project. :)

Post by kcd.Spektor »

How does the power mechanic work:
1. Every ship has a capacitor, it's size can be increased by installing capacitor systems.
2. Every system that requires power(has power bars ON) will drain the energy from the capacitor.
3. If there is no energy in the capacitor then the system will not work(weapons/shields will not charge, med bay won't heal, ect...)
4. Every installed reactor provides some energy to the capacitor.
5. If you find that there's a system that requires power, and it continues to work even if there is no power - that is a bug, please report it.
6. Shields/weapons drain power only when they are charging, so fully charged weapon will not drain any energy until it fires, and when your shields are full - the shields system will not drain more energy until you get hit.

How does Local jumping work:
1. Every engines system you install increases the maximum charge speed of your ship's engines(to a maximum of 15)
2. Charging the engines works the same way as described above(if there's no energy in capacitor - no charging :))
3. The amount of energy needed to perform a local jump is equal to the ship's jump-weight.
4. What affects the ship's jump-weight: amount of room cells on the ship, amount of blocked cells(the ones that are not visible but are not passable), amount of installed systems.

How does Hyper jumping work:

1. Every hyper drive system has it's own capacity
2. Every hyper drive you install increases the maximum hyper drive capacity of the ship and charge speed of your ship's hyper drive(to a maximum of 15)
3. Charging the hyper drive works the same way as described above(again no energy - no charging)
4. The amount of energy needed to perform a jump to the nearest sector is equal to half of ship's jump-weight.
Example:
Ship jump-weight = 100
Installed hyper drives = 2
First hyper drive capacity = 120
Second hyper drive capacity = 200
Ship's total hyper drive capacity = 320
Max hyper jump range = 320/(100/2) = 6
As soon as the hyper ship's hyper drive accumulates 50 energy you can perform a jump to the nearest sector.
If you let you hyper drive fill up to max you will be able to jump 6 sectors at once.
Last edited by kcd.Spektor on Tue Feb 02, 2016 4:41 am, edited 1 time in total.
kcd.Spektor
Posts: 586
Joined: Thu Nov 26, 2015 8:21 am

Re: Hurray! Another multiplayer clone project. :)

Post by kcd.Spektor »

jrb00001 wrote: That should be very easy with libGDX:

Code: Select all

texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
Will try this. Thanks :)
Please add a way to shutdown (or at least force-save) the server from the console.
Will do.

I will open a internet server as soon as it works headless and there is a way to save.
That would be great:)
Perhaps we could have some massive testing :)
It would be good if the connect dialog would also accept dns names.
Need to test it - perhaps it does :)
It looks like the drain of oxygen is too low. With all doors open and a destroyed O2 system it decreases by 10% per minute. And it does not decrease at all while nobody is on board.
[/quote]
The oxygen mechanic will be refactored(check the ToDo list on the first post).
jrb00001
Posts: 201
Joined: Fri Jan 15, 2016 2:22 pm

Re: Hurray! Another multiplayer clone project. :)

Post by jrb00001 »

kcd.Spektor wrote:6. Shields/weapons drain power only when they are charging, so fully charged weapon will not drain any energy until it fires, and when your shields are full - the shields system will not drain more energy until you get hit.
I think shields should use half of the energy while not charging to simulate some sort of "shield diffusion". That would also make shields a bit weaker compared to evasion / weapon focused designs.
kcd.Spektor wrote:How does Local jumping work:
1. Every engines system you install increases the maximum charge speed of your ship's engines(to a maximum of 15)
2. Charging the engines works the same way as described above(if there's no energy in capacitor - no charging :))
3. The amount of energy needed to perform a local jump is equal to the ship's jump-weight.
4. What affects the ship's jump-weight: amount of room cells on the ship, amount of blocked cells(the ones that are not visible but are not passable), amount of installed systems.
You could combine Local jumping with Hyper jumping. It is the same except it needs less energy and is faster. The engines system should improve evasion.
kcd.Spektor wrote:
jrb00001 wrote:It would be good if the connect dialog would also accept dns names.
Need to test it - perhaps it does :)
The problem is that the text field does not allow anything except numbers and dots. Java / kryonet should handle it fine.
The_Bear
Posts: 225
Joined: Mon Jan 04, 2016 5:57 pm

Re: Hurray! Another multiplayer clone project. :)

Post by The_Bear »

kcd.Spektor wrote:
The_Bear wrote:Make it so you can instead of jump around the sector, you fly around in your ship. How fast you fly should depend on how good your engines are, how big your ship is and maybe a system that let you maneuver easier.
Lasers should be used against big ships or when you fly close to the enemy. Lasers should also be very fast so you can't dodge them that easily.
You should also make all missiles to heat seeking missiles so that they follow their target.
It would be too hard to implement.
I had this idea initially, but dropped it because of difficulty/time.
I think you should add it but maybe as number 10 or 9 on the list.
jrb00001
Posts: 201
Joined: Fri Jan 15, 2016 2:22 pm

Re: Hurray! Another multiplayer clone project. :)

Post by jrb00001 »

The_Bear wrote:
kcd.Spektor wrote:
The_Bear wrote:Make it so you can instead of jump around the sector, you fly around in your ship. How fast you fly should depend on how good your engines are, how big your ship is and maybe a system that let you maneuver easier.
Lasers should be used against big ships or when you fly close to the enemy. Lasers should also be very fast so you can't dodge them that easily.
You should also make all missiles to heat seeking missiles so that they follow their target.
It would be too hard to implement.
I had this idea initially, but dropped it because of difficulty/time.
I think you should add it but maybe as number 10 or 9 on the list.
If the ships are currently aligned to a grid, that would mean rewriting most of the game. If the ships are not aligned, move all characters which take oxygen from the ship. But rotation would be a big problem in both cases (probably a big rewrite of the game). I do not think that feature is important enough to justify >100h of work.

Another bug / undocumented feature: If I stop the server while a client is connected, the client does nothing. It should show a dialog to notify the player.
Post Reply