1. This forum is obsolete and read-only. Feel free to contact us at support.keenswh.com

Node-Based Blockprogramming

Discussion in 'Suggestions and Feedback' started by HyperStorm, Jan 3, 2015.

Thread Status:
This last post in this thread was made more than 31 days old.
  1. HyperStorm

    HyperStorm Apprentice Engineer

    Messages:
    122
    Good day.

    I would like to present you an idea that would facilitate some programming blocks very day.

    In addition to the normal Programming with C # there should be still a possibility,
    Node-Based Programming to use.

    Although this method is usually not so complex and thus not as
    Is versatile, it's a quick and easy method especially
    Program blocks.

    Here's an example:

    [​IMG]

    So it looks, for example, in other games such as the Crysis Editor:

    [​IMG]

    And as you can see you can program more complex circuits thus:

    [​IMG]
    That would be those who can not program in C # the opportunity to give still enjoy the benefits of programmable blocks.

    I hope you like my idea and please excuse the bad translation ... (google ...)

    Yours sincerely
    HyperStorm
     
  2. DivineWrath

    DivineWrath Junior Engineer

    Messages:
    531
    I was thinking about something like this. Instead of getting people delve strait into the code, which introduces problems with typos and spelling mistakes, make an UI to help make it more understandable and manageable. By making things you can move or manage, you help to remove accidents. For instance, if you create a new node, you could choose to make it an object, the node would start with things already written for objects, like private variables, public variables, how to construct it, how to deconstruct it, the object's name, list of functions, etc. You can name some of the stuff, and choose what to add, but you are not required to worry about syntax, brackets, or many other programing demands (or at least not as much of it).

    When you get into writing code, or import someone else's code, you could link up various stuff. For instance, the game offers control over parts and groups. When using code to open a door under correct conditions, you could link it to the correct door, or group of doors.

    Perhaps I should stop talking and read up on node based programing. That is what it is called, right?

    By the way, I forgive you using Google translate.
     
  3. Meadea

    Meadea Trainee Engineer

    Messages:
    22
    If GUI programming and modifying the scripts of other permission'd programming blocks is possible, it may even be possible to make an in-game [in game script maker] script.
    If not, it is possible to make a 3rd party program to generate space engineers in-game programming code.
    (From this kind of graphical interface)

    While I do think it being an option is a good idea, I feel like as its only been introduced some more powerful features like GUI manipulation and interaction with other grids would be more beneficial right now - especially since they could allow some users to implement this themselves.

    It's called various things, but graphical or visual programming is the main name. (See https://en.wikipedia.org/wiki/Visual_programming_language)
     
    Last edited by a moderator: Jan 3, 2015
  4. Code Name D

    Code Name D Apprentice Engineer

    Messages:
    145
    Great minds think alike. And apparently we do too because I had also come up with an idea just like this.

    It has the advantage of being intuitive.

    I also integrated the idea to work in tangent to the UI. So in combination with each block component, you also get a widget input or output that is coupled with each block that is displayed on a control panel.

    For example, lets say you want to open a hanger door. You have a widget on your control panel that works like a 2 position switch with position 1 and 2. Position 1 is to open the hanger door, while position 2 closes the hanger door. The widget is connected to a block in the programming space. Lines connect the switch block output to the piston to change its position. The piston also has an output which is sent to another widget to show that the door is open/closed/ or in transit, which is displayed on the control panel just next to the switch.
     
  5. MegaMiner

    MegaMiner Junior Engineer

    Messages:
    625
    Looks like timer blocks can do that, you just need the GUI.

    If you already have a GUI, which it looks like you do, just have it translate your block logic into c# if it can.
     
  6. TangoFoxtrot

    TangoFoxtrot Apprentice Engineer

    Messages:
    112
    There could also be an in-between; have a list of commands you can copy-and-paste into the C# editor, so that you don't have to remember the proper syntax to use a command. A little bit like training wheels.
     
  7. Code Name D

    Code Name D Apprentice Engineer

    Messages:
    145
    I am going to say it because it needs to be said. The devs choked here by adopting a C# approach. Meaning that only those who are familiar with C# can write code for their ships. For the rest of us, this is an inaccessible feature. They took the lazy way out.
    And frankly this “training wheals” stick is just insulting.
    If you are going to have “in between” commands, why not just make your own in-game programming code? Something that is user friendly and doesn’t require I take 120 hours of basic programming theory.
     
  8. Wombats

    Wombats Junior Engineer

    Messages:
    791
    They mentioned this is only the first iteration of the programming block; so hopefully some easier method is coming for those not experienced with code. I was a little bit surprised with how 'intense' shall we say the coding feature is. Definitely not for beginners.
     
  9. Killacyte

    Killacyte Senior Engineer

    Messages:
    1,659
    I am a computer science major, graduated with a bachelor's degree. Before college I knew pretty much nothing about coding, except for a small amount of html web design. In class I asked such basic questions about code and syntax that I am astonished I didn't hear others burst out in shocked laughter. I'm just trying to give the impression of how LITTLE I knew about programming whatsoever, when surrounded by others that were already pretty good at it. And now for some basic points:

    1. I've read a lot of people excusing the current C# implementation of programming with things like "it's real world learning with training wheels", or "it will be useful later", or an insulting assumption like "only people that are too lazy to try, won't be able to use this". These points, while they might have some truth to them, completely blow off the effort required to learn programming from scratch. I think these points dodge the fact that programming can be a formidable obstacle, and many people AREN'T ever going to use C# in their lives, and thus they fail as useful arguments.

    2. On the other side are many people complaining that programmable blocks are now useless to everyone except programming nerds. I've seen many posts citing things like "Something that ... doesn't require I take 120 hours of basic programming theory", from Code Name D above. This is a huge exaggeration of the difficulty of entry programming; you only have to start small, by say making a program that will change the text on a beacon. Pretty much the first program all programmers make is something that says "Hello World".

    3. I agree the devs kind of choked on just giving the players C#, some API, and saying "go at it". But in the meantime(since the devs probably will change it), the difficulty of learning how to do a few things in code is not so bad that everyone that doesn't have programming experience is BARRED from it's use. Middle-ground, FTW.

    ON-TOPIC
    I think visual programming is probably the way to go for a game like this. I would just hope to not lose any functionality, but I think that loss is probably a given. So if there were still a way to apply custom written scripts, I'd be happy.
     
    Last edited by a moderator: Jan 4, 2015
  10. Meadea

    Meadea Trainee Engineer

    Messages:
    22
    Imho, programming itself has far reaching uses from maths and problem solving to philosophy, and this is all ignoring programming itself. I've also think that it's a good boost to STEM (Science, Tech, Engineering & Maths) fields.

    I completely agree.

    Personally I think C# and a visual language would be better (even better, a visual language simply building the still-modifiable script), but I'm very happy with just having C#, in-game scripting in sandbox games is usually a pretty amazing feature. I'd like more (all) access to stuff that the player can do manually, though. (Including better sensors)

    Unfortunately, judging from the various absurd comments like "this is a big [bleep] you to dyslexic people" and "omg the game is ruined again", I think it might be hard to convince some people that this is anything other than the literal end of the world.

    As I said, I don't have a problem with it and think it's a good idea, but I think adding more capabilities for programming would be better right now.

    I certainly wouldn't want to have visual programming and no C#, and if I had to pick one, it'd be C#. If they add GUI programming, storage and such, players could even make visual languages. Hell, you can make a third party program now to do that, that generates space engineers code. (And before anyone commandeers that, "you can mod it/DIY/etc" is not, in any way and will never be, an argument against it being implemented by KeenSWH - it's nearly as bad as the "make your own game" response)
     
    Last edited by a moderator: Jan 4, 2015
  11. Killacyte

    Killacyte Senior Engineer

    Messages:
    1,659
    GUI programming would be flipping amazing(I have read the blog post). Adding more capability to the programming is way easier than making the visual interface for it, so I agree they should concentrate on that for a while. The "capability" bit is very open-ended, so I expect that to be worked on for the rest of game's development, really.

    @Meadea, about your first point, I do think the programming experience could be beneficial in any number of ways. I consider experiencing something new is always a valuable learning experience. I just think the points I mentioned, if read by someone on the opposing "side", or an undecided, won't persuade the person. So they literally fail as arguments, and just become annoying.
     
    Last edited by a moderator: Jan 4, 2015
  12. Striped_Monkey

    Striped_Monkey Junior Engineer

    Messages:
    514
    I like the idea if we can still just use the command line

    This would be like training wheels for ones who don't know how to program and this would also benefit if the node inputs/outputs were color coded so people don't get confused and try to output text into a math node or something stupid like that
     
  13. inventor200

    inventor200 Apprentice Engineer

    Messages:
    446
    Sorry to butt in and maybe go off-topic, but...

    How is picking C# a bad idea? It's a widely-used language that has been tested hundreds or thousands of times to be robust.

    Do you really want a new Space Engineers language that needs its own revising, testing, and constant improvement before it becomes its own efficient language? ZDoom tried this with Strife-based conversation programming, and that language REALLY needed work...

    All just my opinion, of course, but I want to just put this out there to either be heard, argued, or even disproved.
     
  14. Martinineter

    Martinineter Senior Engineer

    Messages:
    2,253
    This is quite a good idea, I have trouble understanding how c# works, this would be the solution. Maybe have these nodes transfered into actual code so people can see the code equivalent and also learn from that. Coding be more accesable+learning to code=win-win in my book.
     
  15. HyperStorm

    HyperStorm Apprentice Engineer

    Messages:
    122
    Thanks for the positive response to the idea.

    To eliminate the doubt:

    The Node-System should not replace the programming with C#.
    It just should be a alternate for people who cant programming with C#. :)
     
  16. WiFiN

    WiFiN Trainee Engineer

    Messages:
    52
    I guess we're heading that way. Eventually it'll be like this, or more visual, like CAD editors.
     
  17. Textor

    Textor Junior Engineer

    Messages:
    775
    I can get on board with this. Honestly, I think the node-based programming would make me (personally) more confused than just regular C#, but that's probably because I'm used to programming in C# and VS environments, so text-based programming "makes sense" to me.
     
  18. BlackFang

    BlackFang Trainee Engineer

    Messages:
    25
    Seems like a lot of work that would ultimately not really add anything to the game. I would rather they focus on opening up the programming block and the mod api rather than waste time making the programming block easier to use for people to lazy to click this link. https://www.spaceengineerswiki.com/Programming#GridTerminalSystem
     
  19. kristakis

    kristakis Junior Engineer

    Messages:
    607
    +1 for a block based graphical programming system.

    TBH I was disappointed that we didn't get this first - the timer block, button panel and G menu options while in a cockpit are already using a similar system. There are a number of other places that take a similar approach, Lego Mindstorms and Scratch come to mind but I'm sure there's heaps of others.

    A system like this is simple enough that non-programmers can get involved while having access to the raw C# code means that coders can do what they are already doing.
     
  20. kor kilden

    kor kilden Trainee Engineer

    Messages:
    29
    Perhaps someone can write an out-of-game program to convert graphical layouts into in-game c# scripts. I personally deplore graphical programming languages (such as labview and HPVEE, which I deal with at work on occasion). They feel like cheating, and it's another layer of abstraction above the hardware it works on that I just don't like. Personally, I think C++ is too high level, I'm a sucker for a nice instruction set and a good assembler.
     
  21. Leif_The_Head

    Leif_The_Head Apprentice Engineer

    Messages:
    351
    +1 for visual node based programming that writes the code for you, so you can revise it and change any letter if you wish so.
     
  22. HyperStorm

    HyperStorm Apprentice Engineer

    Messages:
    122
    Alternative should the program at least make it easier. C # is not easy to learn. This can not learn on a free weekend you.

    C # is very complex. This is a good thing, you should only players who are not familiar with it also give you the chance as those which already can.

    There were many possible systems, with which you can program the easier the game. Prefabricated blocks of code that you just have to adapt, for example.

    I just think that players who are not familiar with C # here are marginalized.

    I'm going for a game determined not start me tons of buying books, and attend workshops to only program blocks in one game ...

    Sry for the bad translation ...
     
Thread Status:
This last post in this thread was made more than 31 days old.