profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/nielsmh/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Niels Martin Hansen nielsmh Denmark

nielsmh/vsynth 7

Vsynth was a video processing system, aiming to become a replacement for Avisynth. This is dead, but take a look at Vapoursynth.

nielsmh/OpenTTD 2

OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe

nielsmh/kumaji 1

Cross-platform subtitle rendering library

nielsmh/webassdraw 1

HTML5-based editor for ASSA vector drawings

nielsmh/Aegisub 0

Cross-platform advanced subtitle editor

nielsmh/honcho 0

Honcho: a python clone of Foreman. For managing Procfile-based applications.

nielsmh/logbot 0

IRC bot logging channels to a Redis database

nielsmh/nml 0

NewGRF Meta Language

nielsmh/OpenTTD-deps 0

Build dependencies for OpenTTD

nielsmh/OpenTTD-git-hooks 0

A collection of both client-side and server-side hooks used around the OpenTTD git repository.

pull request commentOpenTTD/OpenTTD

Change: move sensitive information to secrets.cfg and private information to private.cfg

Can I suggest writing a short comment at the top of secrets.cfg when it gets created, explaining that these are secrets belonging to the specific installation, and isn't something supposed to be secret from the user. I think some might misunderstand the filename as "these are the secrets of the OpenTTD project and now I can go hack everyone". I don't have any good suggestions for phrasing right now.

TrueBrain

comment created time in 24 days

push eventnielsmh/website

Niels Martin Hansen

commit sha 248d13c5c4195fd18070653a5f140bf1c8d56aca

Fix: Avoid 'of ... of' phrasing

view details

Niels Martin Hansen

commit sha 5597c364f0fbc583ecfd7d53fbbc44ae30c1d290

Change: Make filename dashing

view details

Niels Martin Hansen

commit sha 160e944fd9f3f436f39379cfc8b0ae296487f30b

Add: Link to content creation guidelines on contact page

view details

push time in 2 months

push eventnielsmh/website

Niels Martin Hansen

commit sha cca6cc03ecde0676e2e7ac82b94bef8a62efefe9

Change: Move content creation guidelines to their own page

view details

push time in 2 months

Pull request review commentOpenTTD/website

Add: Policy section for content creators

 ---  <div id="section-full">+    <div class="section-header">+        <h3>Gameplay streaming, Let's Play content, and Monetization Statement</h3>+    </div>+    <div class="section-item">+        <div class="content">+            <p>The core game of OpenTTD is released under the GNU General Public License (GPL) version 2, as are the OpenGFX, OpenSFX, and OpenMSX baseset content packs. The GPL permits use of the software for any purpose including commercial purposes.</p>+            <p>Following is a statement of intention from the developers. This is not a legal statement. If any questions arise from this statement, please consult the license text of the involved software and game data.</p>+            <h3>General permission for the unmodified game</h3>+            <p>It is the intention of the development teams behind OpenTTD and the open baseset content packs that any Let's Play, review, and other similar content, is permitted with no limitations. Monetization and commercial use of the content is permitted without limitations.</p>+            <p>Note that this statement does not imply any endorsement from any of the developers of OpenTTD or the baseset content towards any content creators. Any views expressed by content creators in content using the OpenTTD game and baseset content packs are purely those of the content creator.</p>

I changed it to "game data" when that's what it means.

nielsmh

comment created time in 2 months

PullRequestReviewEvent

push eventnielsmh/website

Niels Martin Hansen

commit sha 1061dedaac0ac821e327c9e838c0c2f020973f32

Change: Use the term 'game data' for game content, and further clarifications

view details

push time in 2 months

push eventnielsmh/website

Niels Martin Hansen

commit sha 0079621a52b95f2fefb9c4b3d4d03168b27594ae

Fix: Typo and improve clarity

view details

Niels Martin Hansen

commit sha f7996d3ecb9fc21fd9fb612ccc6f73c9bb2e457c

Add: Clarify this is a statement of intention, and that there is no endorsement

view details

push time in 2 months

PR opened OpenTTD/website

Add: Policy section for content creators

Just being explicit about what the license says and that the intention is indeed what it says.

+16 -0

0 comment

1 changed file

pr created time in 2 months

push eventnielsmh/website

Niels Martin Hansen

commit sha eae46f0b6fc7f960905d073b0404a5b81b09407c

Add: Policy section for content creators

view details

push time in 2 months

create barnchnielsmh/website

branch : letsplay-policy

created branch time in 2 months

fork nielsmh/website

OpenTTD's website in Jekyll

https://www.openttd.org/

fork in 2 months

issue commentOpenTTD/OpenTTD

Music Audio is not normalized/leveled correctly

Cannot reproduce. Tested with dmusic driver playing to the Microsoft GM soft-synth using the default DLS instruments, as well as with the win32 driver playing to two different hardware MIDI synths. The volume control is correct in all cases, with track 9, 26, and any other tested from the Doom music set. Of course, 1.11.2 Windows version from Steam.

suit

comment created time in 2 months

issue commentOpenTTD/OpenTTD

OpenTTD 1.11.2 (Steam) crashes on startup, standalone working fine

Make sure you don't have an openttd.cfg file in your E:\Steam\steamapps\common\OpenTTD folder.

I'm wondering about the DisplayFusion DLL hook that's loaded, I wonder if it could somehow cause problems with the Steam overlay and our OpenGL code. It's worth a try to disable the hardware acceleration setting.

suit

comment created time in 2 months

issue commentOpenTTD/OpenTTD

Players report unauthorized clients joining passworded companies

See the discussion in #8420, it's about this exact issue. The reason for not saving company passwords in the savegame is that then you can't make the savegame available for others without the passwords being near-trivial to extract for anyone to see. The discussion in #8420 is about adding the required cryptographic features needed to eliminate those problems.

duckfullstop

comment created time in 3 months

Pull request review commentOpenTTD/OpenTTD

Feature: NewGRF Bridges without overriding

 static CommandCost DoClearBridge(TileIndex tile, DoCommandFlag flags) 		} 		DirtyCompanyInfrastructureWindows(owner); +		DeleteNewGRFInspectWindow(GSF_BRIDGES, tile);+		DeleteNewGRFInspectWindow(GSF_BRIDGES, endtile);++		Bridge *b = Bridge::Get(GetBridgeIndex(tile));+		Axis axis = b->GetAxis();++		auto *list = &_bridge_index[axis][axis == AXIS_X ? TileY(tile) : TileX(tile)];

I see this logic in a few places. Consider making a function in bridge_map.cpp that returns an appropriate iterator instead, or even writing a wrapper iterator class.

kiwitreekor

comment created time in 3 months

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentOpenTTD/OpenTTD

Codechange: Disable pointer locking by default

I think having an alternate cursor code path would be useful regardless, as there are some requests to support a high-contrast cursor style. In my mind that would be basically skipping the baseset for the cursor graphics and draw something custom instead.

embeddedt

comment created time in 3 months

pull request commentOpenTTD/OpenTTD

Codechange: Disable pointer locking by default

There are two kinds of "decorated" mouse cursors. The basic are single-sprite cursors, those are most of the construction tools. In the original graphics the construction tool is integrated in the cursor itself:

image

In OpenGFX the tool appears to be a separate sprite next to the cursor, but it's actually still a single sprite:

image

When you drag a vehicle in a depot, the vehicle graphics is used for the mouse cursor instead, the cursor is still only a single sprite then.

embeddedt

comment created time in 3 months

issue commentOpenTTD/OpenTTD

Players report unauthorized clients joining passworded companies

Company passwords are not stored in savegames, that's by design. When you save and reload a game in multiplayer, all companies start out without passwords.

duckfullstop

comment created time in 3 months

pull request commentOpenTTD/OpenTTD

Fix #9117, 04ce1f07: [Fluidsynth] Infinite wait when stopping song

The basic idea of the try_lock is to avoid blocking the rest of the sound effects rendering if the music player is busy.

rubidium42

comment created time in 3 months

issue commentOpenTTD/OpenTTD

"Input lag" on MacOS long-click since 1.11.0-beta2

What input device are you using, a track pad or a mouse?

rexxars

comment created time in 3 months

pull request commentOpenTTD/OpenTTD

Feature: NewGRF Bridges without overriding

Storing the coordinates of the bridge in the pool object could also lead to another optimisation opportunity, and in the future (with #9043) open up for bridges over bridges on the same row. Use a multimap to keep an index of all bridges on a row/column of the map, to avoid having to search the landscape array. The multimap could also be a basic map of interval trees, each interval being a bridge. An interval tree would also allow overlapping intervals, and that way make it efficient to search for overlapping bridges on a tile.

kiwitreekor

comment created time in 3 months

pull request commentOpenTTD/OpenTTD

Feature: NewGRF Bridges without overriding

Also, maybe should just have put it here, but I opened a discussion #9162, basically this PR as-is is mostly the minimum to support current features, but I think there are several more features that can be added without too much effort.

kiwitreekor

comment created time in 3 months

Pull request review commentOpenTTD/OpenTTD

Feature: NewGRF Bridges without overriding

 static const NIVariable _niv_stations[] = { };  class NIHStation : public NIHelper {-	bool IsInspectable(uint index) const override        { return GetStationSpec(index) != nullptr; }-	uint GetParent(uint index) const override            { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }-	const void *GetInstance(uint index)const override    { return nullptr; }-	const void *GetSpec(uint index) const override       { return GetStationSpec(index); }-	void SetStringParameters(uint index) const override  { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }-	uint32 GetGRFID(uint index) const override           { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; }+	bool IsInspectable(uint index) const override { return GetStationSpec(index) != nullptr; }+	uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }+	const void *GetInstance(uint index)const override { return nullptr; }+	const void *GetSpec(uint index) const override { return GetStationSpec(index); }+	void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }+	uint32 GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; }

Accidentally removed alignment?

kiwitreekor

comment created time in 3 months

Pull request review commentOpenTTD/OpenTTD

Feature: NewGRF Bridges without overriding

+/*+ * This file is part of OpenTTD.+ * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.+ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.+ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.+ */++/** @file newgrf_bridge.h Functions related to NewGRF bridges. */++#ifndef NEWGRF_BRIDGE_H+#define NEWGRF_BRIDGE_H++#include "newgrf_callbacks.h"+#include "newgrf_spritegroup.h"+#include "date_type.h"+#include "bridge_type.h"+#include "bridge.h"+#include "bridge_map.h"+#include "newgrf_town.h"+#include "newgrf_commons.h"+++/**+ * Struct containing information about a single bridge type+ */+struct BridgeSpec {+	Year avail_year;             ///< the year where it becomes available+	byte min_length;             ///< the minimum length (not counting start and end tile)+	uint16 max_length;           ///< the maximum length (not counting start and end tile)+	uint16 price;                ///< the price multiplier+	uint16 speed;                ///< maximum travel speed (1 unit = 1/1.6 mph = 1 km-ish/h)+	SpriteID sprite;             ///< the sprite which is used in the GUI+	PaletteID pal;               ///< the palette which is used in the GUI+	StringID material;           ///< the string that contains the bridge description+	StringID transport_name[2];  ///< description of the bridge, when built for road or rail+	PalSpriteID** sprite_table;  ///< table of sprites for drawing the bridge+	byte flags;                  ///< bit 0 set: disable drawing of far pillars.

Should there be an enum of this?

kiwitreekor

comment created time in 3 months

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentOpenTTD/OpenTTD

Add: [AI/GS] Missing water related functions and objects

 ERROR: IsEnd() is invalid as Begin() is never called     GetLocation():       33417     GetEngineType():     153     GetUnitNumber():     1-    GetAge():            0+    GetAge():            1

A guess could be that the number of operations before the AI is suspended and another game tick simulated is reached with the new tests inserted.

SamuXarick

comment created time in 3 months

PullRequestReviewEvent