Unknown-Horizons Godot Engine Port

Unknown Horizons

We are searching for developers for our Godot Engine port. We want to port it because our current engine is basically dead. The GUI lib that we use is also dead, and has a lot of problems. We really love our game and the community loves it too.

We are looking for:

  • Mainly, Godot programmers.
  • A graphics artist would be handy, because maybe we can reuse all previous graphic assets. We have a lot blender files.
  • Later, a sound effects and music creator would be nice too.
  • A design document writer would be really nice as well, so that our wiki could get a lot of more information.

Unknown Horizons is a 2D real time strategy simulation with an emphasis on economy and city building. Expand your small settlement to a strong and wealthy colony, collect taxes and supply your inhabitants with valuable goods. Increase your power with a well balanced economy and with strategic trade and diplomacy.

Find more information about Unknown Horizons on our website.

Community

Type Where?
Discord https://discord.gg/VX6m2ZX
Bug Tracker https://github.com/unknown-horizons/godot-port/issues
IRC Channel irc://irc.libera.chat/unknown-horizons
Web IRC Link https://kiwiirc.com/nextclient/irc.libera.chat/#unknown-horizons
Forum https://forum.freegamedev.net/viewforum.php?f=100

More support information here.

License

This game is free software. It uses the GNU General Public License, version 2. The licenses used for music, artwork, sounds, etc. can be found here.

Comments
  • Which renderer will be default? GLES 2, GLES 3 or Vulkan?

    Which renderer will be default? GLES 2, GLES 3 or Vulkan?

    Now with Godot 3.0.6 we don't have any choice, so for now UH use GLES 3. When Godot 3.1 will arrive, I would recommend moving immediately to GLES 2. Even if Godot will support Vulkan, UH should stay with GLES 2.

    Changing renderer when project will be advanced, probably will need a lot of work to customize it with it.

  • Why porting?

    Why porting?

    I like to question the motivation behind the “port” (which actually looks like a near-complete start from scratch) to Godot.

    OK, the libs you use might be outdated and no longer maintained. But the question is: Is it really so bad?

    What are the specific problems with the libraries you use? Is there any problem in the libs that is a complete showstopper and can't be worked around at all? Is working with the libraries so painful that proceeding programming can not be continued? Frankly, I doubt that. Even if there are serious problems, I doubt that any problem is so bad that the game cannot be finished at all.

    The fact is, the current UH (2019.1) is already pretty far-depeloped and very functional and playable. I have played it, and had a blast! :) If the libraries are really that bad, I wonder how UH could possibly have made it so far already.

    The problem I see with this move is that you're throwing away a lot of work and reset yourselves back to square one. All the work you have done to create Unknown Horizons … it's all for nothing. The work you will invest into the Godot “port” is work in which the project will not advance at all. You will spent a LONG time in repeating work that you have already all done (possibly also repeating old bugs that were already fixed before). Would the decision to go Godot have been in an earlier stage, where not much functionality was implemented, it would have made more sense, but now, at this fairly advanced stage, I'm afraid it's probably just too late.

    Also, I see there's no actual Godot code written yet. It appears to me this idea of the Godot “port” is a non-starter. It seems that progress on the project has come to a near-standstill because of this decision, since work on the original project is de facto “forbidden” right now.

    I also question why Godot was chosen specifically, seeing that the team probably has no experience in Godot yet (otherwise, you wouldn't ask for help).

    Maybe the decision to move to Godot is not a good idea, and should be revised. Julius from FreeGameDev forums is also confused about this decision.

    Also: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

  • Add an intro animation to the main menu

    Add an intro animation to the main menu

    We may have no gameplay yet, but boy, our menu is sleek!:

    Intro (The GIF is choppy as hell, but it was the best I could do)

    Completely skippable by the way, just press any button in the keyboard/mouse.

  • Cursor

    Cursor

    Added in the cursors of the original game and a management script. The script gets loaded in autoload so the cursor will always be set and can be changed in every scene. It provides the ability to set the cursor to one of the new cursors and to get the currently used cursor. This means tough, that the cursor shuld always be changed from within the cursor script. Else the value of the current_cursor will not be right since godot does not seem to have any Input.get_cursor() method.

  • Add health property and take damage method to unit class

    Add health property and take damage method to unit class

    Made a small fix with the select so it doesn't crash when you make a select over no units. Also added health to unit and a function for taking damage that will destroy the unit if health is == 0

  • Use GDQuests code guidelines?

    Use GDQuests code guidelines?

    GDQuest has made some cool guidelines for GDscript / Godot in general I think we could use: https://github.com/GDquest/kickstarter-quest-3/blob/4765997a54413022ff5c1a4e29eaf7b31f8ceaa6/docs/code-guidelines.md I find them super useful for collaborating and also just for my own projects. They are meant for 3.1, but maybe we can use them when we switch to that version.

  • Porting to Godot - a few beginner's questions

    Porting to Godot - a few beginner's questions

    Hello,

    I am still very unexperienced with programming, GitHub etc., but willing to learn. Most of you may know that there is a forum for porting Unknown Hirozons to Godot at FreeGameDev. Since I do my first steps with Godot, I came across a few hurdles, I asked questions about. Julius over at FreeGameDev suggested that I oppen an issue here with the link to that thread of mine, so maybe some more interested people could have a look, give some hints etc. Thank you so much for your patience with me.

    Here is the link to the forum thread: https://forum.freegamedev.net/viewtopic.php?f=100&t=14356

  • Unable to build

    Unable to build

    Hi,

    I installed Godot from official website and placed it in .local/bin/Godot/3.1/Godot as deduced from build script, ran build.sh on Mint 19 and got errors. Can you try to create a simple Travis CI to provide example environment?

    I won't promise any contributions at this point, but I worked at Flying Wild Hog, love Anno series and wanted to learn Godot anyway, so maybe...

  • Building Base Type

    Building Base Type

    Added base scene for building. Building scenes like stone_house may be created via extending base Building scene.

    We can develop common method and attributes in Building.tscn and Building.gd.

  • Use Godot 3.1?

    Use Godot 3.1?

    In Godot 3.1 optional typing and the 'class_name' keyword get added, which are incredibly useful and make it easier to work together. Since it is nearly finished, it could be a good idea to start in 3.1 since upgrading from 3 to 3.1 would make us more work.

    EDIT: It also has GLES2 support which might be needed for some devs with older computer or laptops.

  • Update Unknown Horizons to Godot 3.2.3

    Update Unknown Horizons to Godot 3.2.3

    • Went through all scenes and opened/saved them.
    • Increased Godot's message queue memory limit to 2048, as 1024 turns out to be too low.
    • Updated WorldThing's texture setter to additionally set albedo_texture. As of 3.2.3, this is now primarily rendered when a material is in use. The same for the Huker's FactionColor material.
    • Edited scripts accessing a singleton enum slightly to fix errors caused by https://github.com/godotengine/godot/issues/14681.
    • Some refactoring and minor fixes.
  • numbers don't fit für BoxShape4x4 and BoxShape4x4Flat

    numbers don't fit für BoxShape4x4 and BoxShape4x4Flat

    Hi guys, I was just browsing the code and noticed something odd with the numbers of the BoxShape thingies:

    • BoxShape1x1 has Vector3(0.5, 0.5, 0.5)
    • BoxShape2x2 has Vector3(1, 0.5, 1)
    • BoxShape4x2 has Vector3(2, 0.5, 1)
    • BoxShape6x6 has Vector3(3, 0.5, 3)

    However

    • BoxShape4x4 only has Vector(1.5, 0.5, 1.5) – shouldn't that be Vector(2, 0.5, 2)? or name it BoxShape3x3?
    • analog for BoxShape4x4Flat: Vector3( 1.5, 0.05, 1.5 ) instead of likely Vector3( 2, 0.05, 2 ) or BoxShape3x3Flat
  • Add more UI related assets/code and wire with entities

    Add more UI related assets/code and wire with entities

    • Added a ProductionChain scene which is able to display different constellations of input/output resource processing and which is an essential part of most of the buildings. Configurable setups: 0/1/2/3 inputs - 1 output Example: Lumberjack: Takes wood and processes to boards -> 1 input - 1 output Toolmaker: Needs 3 different resources to create tools -> 3 inputs - 1 output Church: "Produces" faith but does not need anything for it -> 0 input - 1 output Note: Farm buildings typically have several distinct ProductionChain elements depending on how many fields are processed by a farm.
    • Most widgets now contain their respective graphical interface, so that the gameplay mechanics can be implemented for them.
    • Closes #98.
  • Minimap

    Minimap

    Visually

    It should support different layers of data overlapping each one on top of the other, with some transparency in between. Minimum four to five layers.

    From ground to top:

    • [ ] 1. Terrain:
      • Water >> blue
      • Ground >> brown
    • [ ] 2. Territory: Overlay of each player's area of control
    • [ ] 3. Places of Interest: Anything (static?) in the world that has any relevance to the gameplay (e.g. all existing warehouses to trade with)
    • [ ] 4. Units: All moving units (most dominantly ships, but ground units likewise)
    • [ ] 5. Events: Icons for any occuring event (e.g. fire outbreak, "faction has just found settlement", etc.)

    Gameplay-wise

    Obviously it should be possible to map each point on the minimap to a specific point in the real world (at least roughly) so that it can be used to interact and navigate with.

    Action pattern

    | | Left click | Double left click | Left click and hold | Right click | | ------------------------------------- | ---------------- | ---------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------- | | Terrain/Territory | Jump to location | | Jump to location and drag camera in moving direction | | | Place of Interest | Select entity | Select and jump to entity location | | | | Unit | Select entity | Select and jump to entity location | | | | Event | Jump to location | | | Discard event (remove icon on minimap) | | While in a unit/movement context: | Jump to location | | | Send unit to destination and act depending on layer (e.g. PoI=>Warehouse: dock/trade) |

    Additional Remarks

    • [ ] The minimap should allow zooming for more precise selection and viewing.
  • Ship enhancements

    Ship enhancements

    • [ ] UI menu for all actions (can be a placeholder for now but with working code)

    • [ ] trade/exchange: trade or exchange cargo with a warehouse in range (depending on who's the warehouse belongs to)

    • [ ] attack action: shoot in intervals when in range, make the other ship take damage and sink it if no HP left (similar for buildings at coast)

    • [ ] escort/follow action: follow/protect the selected ship, attack anyone who attacks the escorted ship. If several units are escorting the ship, make them take a reasonable group formation around it.

    • [ ] patrol action: put two or more waypoints to visit repeatedly

    • [ ] move by waypoints: to avoid dangers, go by a specifically defined route

    • [ ] sell ship: sell ship for a fixed price or put it on an auction(?)

    • [ ] self-destruction: play a nice sink animation and remove the ship afterwards

  • Alpha Preview Build

    Alpha Preview Build

    Porting unknown-horizons to Godot is a pretty big task and it will take a long time. However, I would love to see very soon a highly experimental alpha-preview-build. Just a build that one can try. It does not have to do much. Even just displaying the menu and a map is fine, but having that build of the early early stage would give user a glimpse into the future of Unknown Horizons and potentially attract new developers.

Related tags
grobotstxt is a native Go port of Google's robots.txt parser and matcher library.

grobotstxt grobotstxt is a native Go port of Google's robots.txt parser and matcher C++ library. Direct function-for-function conversion/port Preserve

Dec 27, 2022
Simple HTTP tunnel using SSH remote port forwarding

Simple HTTP tunnel using SSH remote port forwarding

Nov 18, 2022
A fast port forwarding or reverse forwarding tool over HTTP1.0/HTTP1.1
A fast port forwarding or reverse forwarding tool over HTTP1.0/HTTP1.1

gogw What's gogw ? gogw is a port forwarding/reverse forwarding tool over HTTP implements by golang. port forwarding/port reverse forwarding support T

Sep 27, 2022
rconn is a multiplatform program for creating generic reverse connections. Lets you consume services that are behind firewall or NAT without opening ports or port-forwarding.
rconn is a multiplatform program for creating generic reverse connections. Lets you consume services that are behind firewall or NAT without opening ports or port-forwarding.

rconn (r[everse] conn[ection]) is a multiplatform program for creating reverse connections. It lets you consume services that are behind NAT and/or fi

Jan 1, 2023
Capture packet request/response pairs for a port and/or IP to aid in Network protocol based Nuclei Templates creation.

network-fingerprint Capture packet request/response pairs for a port and/or IP to aid in Network protocol based Nuclei Templates creation. Resources I

Nov 15, 2022
Partial port of Python difflib package to Go

go-difflib THIS PACKAGE IS NO LONGER MAINTAINED. At this point, I have no longer the time nor the interest to work on go-difflib. I apologize for the

Dec 10, 2022
A simple port scanner written in go

Scan27 A simple port scanner written in go Features: V1 it Scans the given Ip or Host name for open ports Usage ./scan27 Enter IP address or Host name

Jul 23, 2022
Yet another TCP Port Scanner, but lightning faster.

Fast TCP Port Scanner A highly concurrent TCP port scanner. Run Tests with Code Coverage (Linux) go test -cover Compile (Linux) go build -v -o fglps R

Jul 23, 2022
Port of HawkAPI's cloudscraper

hawk-go Port of HawkAPI's cloudscraper Everything is exposed to give access to modification, this is subject to change. Installation: go get github.co

Nov 11, 2022
port close check scanner. detects open ports, sends alert with slack.

aite9 (port close check scanner) サーバのポートが空いてないことを確認するポートスキャナー たくさんのサーバを管理していると設定ミスで内部利用ポートが外部に公開されてしまっている可能性があり、それに早く気付くためのチェックツールです。 サーバのリストを標準入力で渡すと

Feb 3, 2022
TCP Port Scanner in GO lang

Port-Scanner-GO Simple TCP port scanner in golang. Installation & Build You have to have GO version 1.13 run: go build port-scanner-go.go Run single

Jun 6, 2022
Port Scanner & Banner Identify From TianXiang
Port Scanner & Banner Identify From TianXiang

TXPortMap Port Scanner & Banner Identify From TianXiang ./TxPortMap -h 新增加彩色文字输出格式 对http/https协议进行title以及报文长度打印,获取title失败打印报文前20字节 新增日志文件以及扫描结果文件 T

Jan 5, 2023
A port scanner written in go

GoScanner A poor mans port scanner written in go Why? To help learn go Try and build something "somewhat" functional from the command line ?? To not s

Sep 15, 2021
golang script to check server & port status

netcheck Simple script to check if host alive by sending ICMP messages & TCP Port checks. ICMP messages not working without sudo privileges. usage net

Sep 2, 2022
A basic port scanner written in go

go-port-scanner A ultra basic port scanner written in go, written for the advanced Go course in Platzi. Compilation Just as any go program go build ma

Oct 21, 2021
Port scanner written in Go

The result will be similar to that: Result of function ScanPort (scan specific port): 1024 Port result: {tcp/1024 Closed} Result of function InitialS

Oct 6, 2021
High-performance port scanner.

go-portScan 高性能端口扫描器 High-performance port scanner. Feature Syn stateless scan Syn Automatic ARP detection on the Intranet Scanning for large address

Dec 9, 2022