Space Engineers Feedback

12
Votes
Simplify in-game programming language
For the love of god, please simplify the scripting language! Not all of us are graduates of MIT or have an IQ of 4 Billion! I know a little bit about programming and it seems EXTREMELY redundant and over complicated! Just as an example? Take this line: IMyTerminalBlock timer = GridTerminalSystem.GetBlockWithName("Timer Block") as IMyTerminalBlock; First, get rid of GridTerminalSystem altogether. Of COURSE it's going to be on the grid, you can't interact with something OFF the grid, so this is completely redundant. Second, get rid of the IMyTerminalBlock (and variations of that). Both off the front and the end of the line. If you're assigning a block to a variable and it's a door, then ... well ... it's a door. If it's a vent, then it's a vent, if it's a timer, it's a timer. You see the logic here? It's unnecessary. After the changes, the line should read: timer = GetBlockWithName("Timer Block") Now doesn't that look cleaner, faster and less error prone? I could probably find other examples of things that need simplifying, but I really shouldn't have to. It's not OUR job to make the game playable. That's YOUR job.


Runescope shared this idea 15/09/17 15:47
Runescope 15/09/17 16:21
And actually, you can change GetBlockWithName to just GetBlock. It's not like you have a GetBlockWithHeight or GetBlockWithColour or GetBlockWithSomething commands, so specifying "WithName" is ... you guessed it ... redundant!
Runescope 15/09/17 16:23
Heck, you could even just shorten it to "Block" So the line would read: timer = Block("Timer Block") Wow, that looks smooth and sweet now don't it?
Runescope 15/09/17 16:28
I would also recommend that you move away from the C# model of programming (in game only of course) and move to a BASIC approach. I know it's not considered a real language by programmers, but it DOES make more sense to NON-programmers. You don't have unnecessary ";" at the end of lines, "If...Then...Else" statements are easier to parse. As most of your players probably aren't programmers, and as the game goes on and more and more players start playing it, the easier you can make your in-game scripting language, the better. It'll save you grief in the long run.
sirhamsteralot 15/09/17 19:46
just a quick little suggestion for you https://github.com/malware-dev/MDK-SE/wiki/Getting-Started :) if you actually start learning C# it is extremely powerfull and can do basically everything you want (added bonus that its actually a language used in the real world so you could apply what you learn ingame pretty much everywhere). switching to a different language is not an option, the ingame api is way too connected to core game and besides that - it would break every script out there right now.
Runescope 15/09/17 20:34
I know C#. I use it everyday, and in my experience it's not only overrated, it's over complicated. In the extreme. A GAME programming language is NOT supposed to remind me of WORK, I want to get as far away from work as possible when I'm playing. As for breaking scripts, they've done that several times already. Might as well break them again and make it so average people don't have to get university degrees just to use part of the GAME. Did I mention that Space Engineers is a GAME? I really should have mentioned that it's a GAME.
mrkelmad 16/09/17 00:03
Another great idea would be to set the ingame programming language to python it is by far the most beginner friendly programming language. I guess it would be a bit of work to make it work with the real game programme but I it is easily possible for a decent programmer to write a converting function and I mean they are professionals. Also, I think that would make it a lot easier for non-programmers to get into programming if they were given some premade functions. for example something like balanceInventory(inventory, items) and then make these functions redundant so that they can take arrays and lists. or just a function balance all refineries etc. Just some ideas from a guy who just recently learned to program.
BoobyTrapGaming 16/09/17 00:38
how is the visual programming thing doing? is it only for campaign editing?
sjsoft 16/09/17 07:02
Please... Just read some books for begginers! C# Programming for the Absolute Beginner (Absolute Beginners) Learn C# in One Day and Learn It Well: C# for Beginners With Hands… C# 2010 All–in–One For Dummies (For Dummies Series) C# is very easy!
Pharap 16/09/17 13:50
IMyTerminalBlock has a valid purpose, it's part of the inheritance hierarcy. The reason IMyTerminalBlock exists is so you can collect unrelated blocks (doors, timers etc) into a single list under a unified type. You can already do: IMyTimerBlock timer = GridTerminalSystem.GetBlockWithName("Timer Block") as IMyTimerBlock; So yes a timer is a timer and a vent is a vent. Had you said "it's not very well documented" then I would have agreed, documentation is an issue. (Most scripters resort to using ILSpy.) There's one theoretical way to get rid of the 'as' part if they're willing to change the API, but it would mean doing this instead: var timer = GridTerminalSystem.GetBlockWithName("Timer Block"); The absolute best you could hope for is: var timer = GetBlock("Timer Block"); It would be less typing but it wouldn't be any faster because it would be doing the same thing. You don't need to be an MIT graduate to be able to program, you just need a bit of patience and practice. As far as languages go, C# is pretty easy to use at a basic level and there's a large number of tutorials available. For anyone suggesting a change of language: The reason scripting is done in C# is because the game itself is written in C#. Scripts generally run as fast as the game does because there's a 1 to 1 relationship. Switching to a scripting language could potentially incur overhead (i.e. a memory and performance cost) because of dynamic typing and the overhead of the language's environment. Even JITed Lua would have a performance penalty.
jandraelune 16/09/17 17:11
Actually you can get a PB to interact with something off the grid. Jimmcale's script ' Antenna Communication ' which Rexxar made Vanilla.
daspablo 17/09/17 00:54
YES.
duncandisorder 01/10/17 01:16
Please help support my "Furniture and Greenhouse" idea. It really is a good idea, if I say so myself. Personally, I think the game has overlooked a vital part of ship building. We have no furniture, like beds and desks or no bathroom items, like sinks, toilets and showers. Anyway, there's more to my idea, I would appreciate any votes. Thank you. https://feedback.keenswh.com/idea/furniture-and-greenhouse59c67aa110fc8