• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
makuto

Rediscover CPU: a very niche educational game

7 posts in this topic

I've been thinking a lot lately about computer processors and design, and was thinking about actually implementing my own simple virtual CPU as a learning exercise. These days, young programmers grow up on very high level languages without much knowledge of how the language (and the processor) actually work. I am one of those young programmers, so I thought I would implement a tool that would allow me to learn assembly and "Rediscover" things like time sharing OS's, the internet, etc. in a convenient and simplified way.

 

I've been designing the CPU to result in the simplest instructions possible to allow a smooth learning curve (at least for programmers). It's been quite a challenge seeing that it's difficult to find books on assembly language design, not just learning assembly language, but things have been going quite smooth. The CPU will likely be implemented in C++ and take a simple binary input file that will fill the main memory, allowing the player to edit their code using a hex editor. It probably won't be very fast, but it's about learning, so that's OK.

 

I've thought of a list of challenges the player is asked to complete (they self check), such as:

  1. Set certain memory cells to two others plus each other (set/mov, add)
  2. Add certain memory cells X amount of times (jmp, set/mov, add)
  3. Make a checker board pattern on the screen
  4. Use interrupts to stop a process with a key press
  5. Use interrupts to stop a process after X milliseconds
  6. Perform all basic mathematical operations
  7. Add a new I/O device hard disk (really just another binary file on their hard drive) and save something to the disk
  8. Make a Rediscover CPU assembly compiler in any way you want (on CPU or in high level language off board CPU)
  9. Build a time sharing OS that allows you to start, stop, and execute multiple processes
  10. Extend the OS to allow loading programs from an I/O hard disk (ideally make the programs position independent)
  11. Add keyboard input & basic text editing to your OS
  12. Allow programming the OS on the OS (at this point the CPU is independent of the real host computer)
  13. Network a friend and your CPU's together & send each other simple messages or files (networking possible by having a layer over the actual internet that simulates a simple wire)
  14. Extend your networking code to allow multiple CPU's and addresses
  15. Create a higher-level language compiler for your OS
  16. Continue building your OS, network, programs, and I/O devices
  17. Connect to another Rediscover CPU network
  18. Assist in development of new versions of Rediscover CPU

As you can see by that list, this game would be a very nerdy, very niche game (but very educational).

 

Do you guys think this is a viable game? Would any of you play it, or is it just me?

0

Share this post


Link to post
Share on other sites

Do you guys think this is a viable game?

 

Yes...but only in the sense that any game can be viable.

 

Would any of you play it, or is it just me?

 

Personally I would probably not play it unless it was helping out on a beta test. But the truth is "I don't know", it would very much depend on how well it is implemented and how much I felt a sense of accomplishment in achieving set goals. As you have observed this is a very niche game idea and the only attractiveness it holds to me is that I have fond memories of programming in Assembly many years ago.

---------------------------------------------------

 

However -- and this come down to experience you might gain out of making such a game. If you are going to learn/gain experience by creating such a game then you should consider making it, not to mention that a completed game incorporating an unusual topic would contribute to your own resume/portfolio.

 

You might also find that there is a market associated with students and you could possibly design your game towards an educational viewpoint in conjunction with existing assembly language courses which might lead to sale opportunities through the tertiary education markets.

 

Hope this helps :)

0

Share this post


Link to post
Share on other sites

I was thinking it would have a stronger hold on the educational side of things.

 

Thanks for your thoughts!

0

Share this post


Link to post
Share on other sites

Do you guys think this is a viable game? Would any of you play it, or is it just me?

By itself, probably not but some programming games are there. For example, after Minecraft, it's supposed to be 0x10c, where writing efficient programs is... was? supposed to be important.

 

There are some games requiring to implement programs, typically not in asm. I recall Manufactoria and Bureau of Steam Engineering.

 

In general, I'm afraid you're going to spend a lot of effort on this. After reaching point 7, everything goes incredibly complicated by a design standpoint.

My virtual CPU is now a few years old and it's not going to have interrupts, much less a "virtual hard drive" architecture designed around it.

8 is complicated.

9 sci-fi

0

Share this post


Link to post
Share on other sites

I think instead of taking on the whole thing, take on just a part or two.  For instance, You get a certain number of drag and drop commands, and a certain problem that must be solved with it.  You explain how the pieces work together, like a push, or a copy, and ultimately get the final value that you need.  You can make the other additional notes available, so people can understand that this game actually is assembly, setting the registers, etc...   As you add more layers, you can slide over to the next section, where you interact with different parts of the processor, and as command types come in, you route them to the different parts of the processor.  Then in another section dive in further. by getting basic gate logic, and create the IC's.  Presenting puzzles to resolve.  Even dive down to the electron, and how it is pushed through the wire at a very slow rate.  Push electrons through like water/pipes game.  but showing how it works.  Add a resistor, a capacitor, and see how it affects the flow.

 

 

I think a key trick to this is finding existing games that you can apply the same logic to. IC's could be part of a pipe game.  Some let water through some slow it down, some store it up, but each "pipe" carries the IC symbol.  giving a realistic approach to the nature of it.  Diodes producing one way.   Then you have to get the power back to complete the pipe circuit.  

 

Handling x86 instructional sets, like having a mask to identify which area of the ship to route the rest of the command through.  This could be like a mail sorting game, or a canal game, opening up the gates based on the first 4 colors on the tip of the ship.  and relating that to binary.  or Hex, 16 color codes for the first letter.

 

Each style of game play could be continuous.  As the player is working with IC's to control the water flow/return/use, it comes across with quiz questions related to what you've been doing, then continues with the level, and repeats the process.  Once all the quiz questions for that starter level are completed, a new level of that puzzle is introduced.  For instance, proven the use of resistors and lights, now you move on to capacitors and diodes, then add transistors and potentiometers, etc...   then introduce logic gates, to give decisions to the pipes, Not, And, Or, Xor, then memory, etc....   Then add commands structures.  Building the whole thing in pieces, trying to make a game that is fun on its own.  I think I would play this game.

2

Share this post


Link to post
Share on other sites

Do you guys think this is a viable game? Would any of you play it, or is it just me?

By itself, probably not but some programming games are there. For example, after Minecraft, it's supposed to be 0x10c, where writing efficient programs is... was? supposed to be important.

 

There are some games requiring to implement programs, typically not in asm. I recall Manufactoria and Bureau of Steam Engineering.

 

In general, I'm afraid you're going to spend a lot of effort on this. After reaching point 7, everything goes incredibly complicated by a design standpoint.

My virtual CPU is now a few years old and it's not going to have interrupts, much less a "virtual hard drive" architecture designed around it.

8 is complicated.

9 sci-fi

I see what you mean. I don't know if 9 would be sci-fi :) (I designed some intructions that would make it a lot easier).

 

Dan: That would definitely make for an interesting "learn everything about computers" game, but not exactly the direction I was going. Thanks for the awesome suggestion!

0

Share this post


Link to post
Share on other sites

I think you are going into the direction of gamification. Just a disclaimer, this isn't an easy field, furthermore this idea seems to be fairly new in game design and it seems to be one professional game designers struggle with.

 

I once used a Virtual CPU program that could run x86 like assembler and had some virtual devices to play with (like a Traffic Light and a heater and thermostat). Mind you it was the work of a bachelor thesis of two experienced programmers.

 

Why do you want to use C++? If this project is about bringing CPU architecture closer to the people, then the GUI is hugely important. From my experience higher level languages give you more bang for your time invested especially anything GUI related.

 

For me it seems like you follow two different goals, your personal goal is to learn assembler and lower level programming, while your project goal is to build a platform for teaching this. From my experience having different personal and project goals is a bad composition for hobby projects.

1

Share this post


Link to post
Share on other sites

I think you are going into the direction of gamification. Just a disclaimer, this isn't an easy field, furthermore this idea seems to be fairly new in game design and it seems to be one professional game designers struggle with.

 

I once used a Virtual CPU program that could run x86 like assembler and had some virtual devices to play with (like a Traffic Light and a heater and thermostat). Mind you it was the work of a bachelor thesis of two experienced programmers.

 

Why do you want to use C++? If this project is about bringing CPU architecture closer to the people, then the GUI is hugely important. From my experience higher level languages give you more bang for your time invested especially anything GUI related.

 

For me it seems like you follow two different goals, your personal goal is to learn assembler and lower level programming, while your project goal is to build a platform for teaching this. From my experience having different personal and project goals is a bad composition for hobby projects.

A GUI is definitely less imposing then my original idea of how they would interact with the computer (hex edit a binary file, then use the command line).

 

You're right about me following two different goals and I've been thinking about how they do conflict each other subtly. It would probably be best if I split them!

 

Thanks for all of the tips guys!

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0