7 ms·
C Port of Ken Thompson's Space Travel
- Waterluvian 4y agoCall me weird but I have an odd nostalgia for games whose control schemes don’t make all that much sense. I had a bunch of Apple II games where the keys weren’t laid out ergonomically at all. As if they were seen more as “software” than a console game.
- acadiel 4y agoHalf the fun with old computer games was figuring out which keys they used (if you didn’t have the manual)!
- flohofwoe 4y agoSometimes the control scheme suddenly makes a lot of sense when you see the original keyboard layout, and sometimes joysticks also emulated key pressed (like here on the ZX Spectrum: https://en.wikipedia.org/wiki/ZX_Interface_2 https://en.wikipedia.org/wiki/ZX_Interface_2).
- Bluecobra 4y agoOne thing I kinda miss were those little keyboard overlays to help remember the control scheme.
- mseepgood 4y agoI'm gonna port it to his new language Go. lol
- Yuioup 4y agoI think you mean Rust
- mseepgood 4y agoNo, Ken Thompson didn't create Rust.
- queuebert 4y agoWhich graphics library would you use? Or would you still tie into SDL2, which is written in C. ;-)
- mseepgood 4y agohttps://github.com/veandco/go-sdl2 https://github.com/veandco/go-sdl2 or I'll try something like https://github.com/fzipp/canvas https://github.com/fzipp/canvas
- mseepgood 4y agoHere's my first shot at it: https://github.com/gophun/st https://github.com/gophun/st I don't think everything works as intended, but I'm not sure yet, because I'm not familiar with the original.
- tmountain 4y agoFor me, Ebiten hits the right level of abstraction/simplicity for developing games in Golang.
- zserge 4y agoThere's also https://github.com/zserge/fenster https://github.com/zserge/fenster which is fairly minimal and comes with Go bindings out of the box.
- fatneckbeard 4y agosdl_getticks64 was undefined replaced with sdl_getticks now i just seea bunch of dots on a screen i can zoom in i see a circle i press thrust/downthrust and the circle disappears not sure i get it
- detrites 4y ago> The player can move and turn the ship, and adjust the overall speed by adjusting the scale of the simulation. Seems scale works with ship speed to control traversing the solar systems distances: https://en.m.wikipedia.org/wiki/Space_Travel_(video_game) https://en.m.wikipedia.org/wiki/Space_Travel_(video_game)
- thefilmore 4y ago> sdl_getticks64 was undefined I used this because it was recommended by the docs, but it's somewhat recent (introduced in SDL 2.0.18, November 2021). > now i just seea bunch of dots on a screen The dots are other planets and moons you can travel to. > i press thrust/downthrust and the circle disappears If the circle disappears then you've crashed into the planet (it will blink CL in the bottom right). You'll have to start a new game, and thrust in the other direction this time. I've added some more information to the README about the gameplay.
- fatneckbeard 4y agothank you will revisit
- dotancohen 4y agoFor those unfamiliar with the game, development of Space Travel consisted of several ports to different contemporary OSes. This directly led Thompson to develop ideas for his own OS, which we today know as the original Unix.
- exitb 4y agoTurns out that Unix was the ultimate yak shave for Space Travel.
- mrlonglong 4y agoYes apparently SpaceX and NASA use Linux in space.
- ape4 4y agoIf I understand correctly there was no floating point on the PDP-7 // format for hand-rolled floating point used in PDP-7 version struct flt { char exp; // exponent int m1; // signed 36-bit mantissa (0-18) int m2; // 18-36 };
- thefilmore 4y agoYup, Ken and Dennis wrote an entire floating point library from scratch for the game, among other things. [1] > Also during 1969, Thompson developed the game of ‘Space Travel.’ First written on Multics, then transliterated into Fortran for GECOS (the operating system for the GE, later Honeywell, 635), it was nothing less than a simulation of the movement of the major bodies of the Solar System, with the player guiding a ship here and there, observing the scenery, and attempting to land on the various planets and moons. The GECOS version was unsatisfactory in two important respects: first, the display of the state of the game was jerky and hard to control because one had to type commands at it, and second, a game cost about $75 for CPU time on the big computer. It did not take long, therefore, for Thompson to find a little-used PDP-7 computer with an excellent display processor; the whole system was used as a Graphic-II terminal. He and I rewrote Space Travel to run on this machine. The undertaking was more ambitious than it might seem; because we disdained all existing software, we had to write a floating-point arithmetic package, the pointwise specification of the graphic characters for the display, and a debugging subsystem that continuously displayed the contents of typed-in locations in a corner of the screen. All this was written in assembly language for a cross-assembler that ran under GECOS and produced paper tapes to be carried to the PDP-7. [1] https://www.bell-labs.com/usr/dmr/www/hist.pdf https://www.bell-labs.com/usr/dmr/www/hist.pdf
- JoeAltmaier 4y agoBrings back memories of programming in the 70s. Stuff like that was necessary all the time. Writing your own character-plotting code on a graphics terminal; wild attempts to calculate floating point (or estimate it) using every trick in the book and some you invented. Add to that doing bit-banging on pins to simulate serial protocols with timing loops; storing things in odd places like the file buffer on a time-share system (used to run 20+ terminal sessions on a single 1MHz processor!) or the previous line on a programmable terminal (up-arrow and transmit-line to get it back).
- Egoist 4y agoNot sure if it's based on this, but Ken also talked about a similar, but multiplayer game, to play with random people at Bell Labs which sounded fun. https://youtu.be/EY6q5dv_B-o?t=1171 https://youtu.be/EY6q5dv_B-o?t=1171 I wonder if the source code for that exists too.
- SloopJon 4y agoAt the risk of derailing the conversation on this fun project, one my first thoughts was that this game for a long-dead computer is probably still under copyright for another few decades. Then it occurred to me that even after all of that SCO nonsense, I don't know what the copyright/license status of ancient Unix is. The code in this repo does not show any license. The repo from which it's derived claims GPL 3.0, although the README notes: "The code in the original scans are (c) Micro Focus who own the rights to the Unix source code" (Micro Focus International having acquired Attachmate, which acquired Novell, which bought Unix System Laboratories from AT&T).
- chungy 4y ago> after all of that SCO nonsense, I don't know what the copyright/license status of ancient Unix is. It's under a BSD-style license: http://www.lemis.com/grog/UNIX/ancient-source-all.pdf http://www.lemis.com/grog/UNIX/ancient-source-all.pdf
- SloopJon 4y agoI wonder whether that license is valid, given that it was issued by Caldera, when Novell was in fact determined to be the copyright holder. I did find a forum in which a user stated: "[Novell's Legal Vice President] said that while Novell retains certain copyrights over UNIX, they also acknowledge and recognize the validity of certain legacy SCO/Caldera licenses regarding UNIX technologies." https://www.betaarchive.com/forum/viewtopic.php?t=25745 https://www.betaarchive.com/forum/viewtopic.php?t=25745
- juancn 4y agoThe amount of octal numbers in the source code makes my brain itch. It emulates PDP's floating point support with 36 bit words.
- nativecoinc 4y agoCrazy. I thought Pong was “the first video game (released in the 1970s)”. And this sounds a lot more involved.
- wrs 4y agoDepending on the definition you use, the first video game was Spacewar! on the PDP-1, written at MIT in 1962. https://www.thoughtco.com/history-of-spacewar-1992412 https://www.thoughtco.com/history-of-spacewar-1992412
- djur 4y agoPong is one of those cases where it isn't the technical "first" of anything objective. It's not the first video game, the first arcade game, the first home video game, the first ping-pong video game, it's not even the first game Nolan Bushnell was involved with. But it was the first arcade game that was a really big commercial success, that attracted leagues of imitators, etc. And the same is true of Home Pong.
- twic 4y agoVideo games are like compilers, or computers themselves - there isn't really a first one. Far enough back, there are things which are clearly not video games; recently enough, there are things which clearly are video games, and in between, there is a parade of things which are not clearly video games or not. Here's an hour-long, meticulously sourced, rather thoughtful video on the question: https://www.youtube.com/watch?v=uHQ4WCU1WQc https://www.youtube.com/watch?v=uHQ4WCU1WQc (which naturally concludes that video games are a British invention!)
- dang 4y agoI found surprisingly little in past HN threads: Space Travel (the video game that led to creation of Unix) - https://news.ycombinator.com/item?id=12563387 https://news.ycombinator.com/item?id=12563387 - Sept 2016 (1 comment) A video game contributed to Unix Development - https://news.ycombinator.com/item?id=9690739 https://news.ycombinator.com/item?id=9690739 - June 2015 (11 comments) Early Unix history and evolution - https://news.ycombinator.com/item?id=4048704 https://news.ycombinator.com/item?id=4048704 - May 2012 (0 comments but top text mentions it)