Skip to Content

What scares you from learning computer programming

47 replies [Last post]
larienna
larienna's picture
Offline
Joined: 07/28/2008

I am making a kind of survey of opinion. Here is the context:

I want to program an engine to easily design Turn based strategy video games, that could also be used for Board game Prototyping or board game Artificial Intelligence. The only issue is that to use such engine you would need to know how to program in Java.

Now it might not require super advanced Java knowledge, but it would require knowing at least basic if-then-else programming with java. So my question is for people who has no programming knowledge or experience:

What are the barriers that prevents you from learning a programming language. Some suggestion I could think of:

- Too complex to learn
- Too long to learn
- Too long to code
- Coding is boring
- I have better things to do
- I don't have a logical or mathematical mind
- I don't have a decent computer to program
- I am allergic to computers
- Books and tutorials are targeted for programmers, not commoners

Any other reasons?

Do you have suggestions or solutions to those problems?

In an ideal world, what would be the necessary condition for you to start programming? (ex: tell an android to do the code for you )

Thanks for any input

Lofwyr
Offline
Joined: 02/16/2010
Programming and game design are cousins...

I know your question is aimed at non-programmers BUT :)

Programming is NOT complex or a fine art. Programming doesn't take genius level intelligence or a vast knowledge of mathematics. Its a landscape for problem solving. Any game designer is ALREADY a good (or even GREAT!) programmer they just haven't had the chance to apply themselves. (Its true!)

Programming is just like game design, it takes time to really build up your skill-set but to know the basics and find your way around a basic program (HELLO WORLD!) takes about 5-10 minutes in ANY language.

I cant convince anyone that something they think is boring isn't. I would like to point out, however, that if you can't code, you don't actually know if its boring or not :)

If your a game designer, you have both a logical and at least reasonably mathematical mind. Most programming involves some addition, some subtraction and MAYBE some multiplication or division....maybe.

You can code in Pascal on a Texas instruments calculator, your potato of a computer is just fine as long as the keyboard works.

“Im allergic to computers” lol...like actually :)

I can direct you to LOADS of material that is targeted at EVERYONE for learning programming! From basics to the most complicated thing you can imagine, someone wrote an easily digestible and reasonably succinct book about it.

I happen to love Java, if you have any questions I would be more than happy to get you moving in the right direction :)

E

Corsaire
Corsaire's picture
Offline
Joined: 06/27/2013
Not an issue for me, been the

Not an issue for me, been the basis of my profession for thirty years.

I think the biggest barriers for adults are:
- A compelling reason
- A figure-ground issue where code is seen as inpenetrable gobbly-gook
- Math phobia along with the belief that programming takes a bunch of math

Adjacent to those issues is that many people who dabble in it get books that start with the boring parts and have them repeat/copy code. Whereas logical and procedural thinking is the core to learning programming, and people (especially gamers) do that all the time.

For the limited amount I know of your scenario, personally, I'd rather have a player work with something like Scratch.

gxnpt
Offline
Joined: 12/22/2015
learn programming for a game engine

The engine interface should be designed for non-programmers.

Otherwise you have at best the equivalent of my old left click for origin then right click for destination to set vector (auto adjust to 6 allowed directions) vs select a directional arrow for a direction.

If you are building the engine, you get to build the interface.

FrankM
Offline
Joined: 01/27/2017
Scratch the Java requirement

I’ve done some programming incident to work and modding, but just never had a compelling reason to learn Java.

I would like to second the notion of using something like Scratch because that will expand the number of users willing to try the product. The GUI could be a simple code generator and code rendering tool, and it’s perfectly fine to expose the actual code in an advanced mode.

Scratch itself is open source under GPL, but I doubt its code would actually be helpful for you.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:Programming is NOT

Quote:
Programming is NOT complex or a fine art. Programming doesn't take genius level intelligence or a vast knowledge of mathematics. Its a landscape for problem solving. Any game designer is ALREADY a good (or even GREAT!) programmer they just haven't had the chance to apply themselves. (Its true!)

I hold the same position here, so I am trying to find what could be the barrier.

Quote:
I can direct you to LOADS of material that is targeted at EVERYONE for learning programming! From basics to the most complicated thing you can imagine, someone wrote an easily digestible and reasonably succinct book about it.

Not sure about this one, I found 4 complete java tutorial and they all seems to be targetted at programmers. I tried to find tutorial aimed at kids, and could not really found what I was looking for. So I was thinking if it was actually worth writting my own programming tutorial. That could be one of the possible solution.

Quote:
For the limited amount I know of your scenario, personally, I'd rather have a player work with something like Scratch.

Those game engines works well except for turn based strategy games. They are designed to make platformers, space shooters, etc.

Quote:
The engine interface should be designed for non-programmers.

Well that is basically the issue, turn based strategy's "game logic" have no graphical representation. It's basically applying rules on data, and that can only be done in code.

There are ways to simplify the work of the programmer when desiging a framework and there are certain step that could be done using editors like for example: database design, map editing, etc. But the "Game Logic" will have to be coded.

let-off studios
let-off studios's picture
Offline
Joined: 02/07/2011
Programming

I don't know programming much at all (did some BASIC decades ago on a friend's C64), but in the early 00's I picked up software to make video games. I still don't know any official programming language, but I've made a few dozen software projects, game jam entries, and legitimate video games.

I think unless someone sees programming in their professional future, they're not gonna devote the required, effort, time, and energy into it. Unless the bug bites someone when they're young, there's little chance of them picking it up later in life.

For reference, I use Clickteam Fusion:

www.clickteam.com

I also recommend Scratch as a fantastic entry point into making games, young or old:

https://scratch.mit.edu/

If there's an end goal in mind, sitting through exercises, tinkering, and playtesting becomes less of a chore and more of a discovery of one's potential. I love making games because I'm learning something new nearly every time I sit down for a couple hours to do stuff. :)

Corsaire
Corsaire's picture
Offline
Joined: 06/27/2013
larienna wrote: Quote:For the

larienna wrote:

Quote:
For the limited amount I know of your scenario, personally, I'd rather have a player work with something like Scratch.

Those game engines works well except for turn based strategy games. They are designed to make platformers, space shooters, etc.

Quote:
The engine interface should be designed for non-programmers.

Well that is basically the issue, turn based strategy's "game logic" have no graphical representation. It's basically applying rules on data, and that can only be done in code.

There are ways to simplify the work of the programmer when desiging a framework and there are certain step that could be done using editors like for example: database design, map editing, etc. But the "Game Logic" will have to be coded.

I think you are missing a perspective. It's all isomorphic. Scratch is not a game engine, it is a visual representaion of a full language; it is code. It insulates users from syntax and the type of troubleshooting that has people give up when a missing semi-colon reports a non-sensical error twelve lines from the error. Look up Scratch at the MIT site, try it out.

If you want to build a good tool that gets traction and attracts people typically drawn to the lighter graphical game builders, don't just wrap a language and worry about teaching people Java. The challenging code for ai, pathing, etc. is the value you'd bring to the table by encapsulating it and exposing only the fiddly bits through a streamlined language interface.

You may also find projects similar to yours using Lua or such if you research the tools used inhouse at large development companies. It's a problem solved because level developers and designers need to spend their time focused on gameplay rather than debugging. But a similar toool for public consumption, seems like a good idea.

p.s. I suppose you know of Gamasutra?

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:I think unless someone

Quote:
I think unless someone sees programming in their professional future, they're not gonna devote the required, effort, time, and energy into it. Unless the bug bites someone when they're young, there's little chance of them picking it up later in life.

That is an interesting perspective, making more user friendly tools removes the interest in learning to code. I think it could be the main reason.

Quote:
Scratch is not a game engine, it is a visual representaion of a full language; it is code. It insulates users from syntax and the type of troubleshooting that has people give up when a missing semi-colon reports a non-sensical error twelve lines from the error.

I did not know that, I thought it would just be more convenient to code if-then-else directly as text rather than using a drag and drop interface.

Anyways, for now, since I am starting from bottom up, it will be code only. I'll still try to minimise the amount of programming knowledge required. For example, make a rule box (game logic) without knowing anything about inheritance.

If eventually it does get popular and there is a need for graphical design interface, I'll see what can be done. Still one thing I want to do with my engine is to reduce the need to code graphical interface and focus more on game logic code to speed up the process and make playable prototypes fast. So I am not very enthusiastic in coding a graphical environment.

Thanks for the input so far.

let-off studios
let-off studios's picture
Offline
Joined: 02/07/2011
Clickteam Coding Examples

larienna wrote:
Do you have suggestions or solutions to those problems?
In the game-making tool I use, there are a number of examples, tutorials, and engines already made. Something like the grid and hexmap examples on this page might be the kind of example you're looking to make:

http://www.castles-of-britain.com/mmfexamples-g.htm

Nivram's site has been instrumental in showing me how to do complex or arcane things in the games I've made. All the examples on his site can be downloaded and opened in the Clickteam Fusion SDK (System Development Kit) for use and learning.

FrankM
Offline
Joined: 01/27/2017
Example Scratch code

Although Scratch itself is geared toward object-oriented programming of game elements, it can be used to perform fairly arbitrary computation.

Those tan structures are essentially block-defining brackets.

The bit that would require some creativity is random number generation. Not because it's hard to program, but rather because it should reflect what could actually be achieved in a board game. A particular project may need to define its "dice" in a project-level declarations area, then call on those dice as needed in the code/GUI.

pelle
pelle's picture
Offline
Joined: 08/11/2008
Problem with visual

Problem with visual programming is that as soon as you go beyond simple toys it becomes extremely painful and slow compared to typing in code as text. The screenshot above illustrates it quite well. Just consider that every little box there has to be dragged-and-dropped, so instead of just typing "if" (two keys) you need to find and drag the if-box to where it should be. Even using a very bad text editor is a faster way to work.

That said I have spent some hours playing with Scratch with my kids and they loved it for that time, but they quickly lost interest because of how fiddly it becomes when you want to do something more advanced and have to drag around dozens of boxes.

Luckily there are some compromises between drag-and-drop and something heavy like Java. Python is a very popular introductory language these days for instance, and for good reason. For games you can have a look at the scripting-language built into the free game engine Godot (that I have written about here before I think?). Godot is also gaining a new visual editor that looks a lot like Scratch in the next version for anyone that is really into that, so a turn-based-game-engine built in Godot could allow new programmers to start with dragging around boxes if they want to, and then move on to using the text-based scripts. I think some other game engines also offer both possibilities.

Or you could just start from something that already exists and does almost everything you want to. VASSAL for instance is open source, written in Java, and already has what is required to make turn-based games to be played online or solitaire. It lacks AI-code but already has the framework for making game-specific custom Java-classes, so you could make AI in VASSAL if you really wanted to. If you start from scratch, especially if not using a game engine, it will take many man-years to approach the stuff that VASSAL already has. But the problem would be that game-developers would still have to use Java unless you also embed some interpreter for a lighter language into VASSAL.

questccg
questccg's picture
Offline
Joined: 04/16/2011
As a Software Engineer

I can tell you the problem is not with LANGUAGES. There are a myriad of good languages one can learn and program with... Where I feel "everything" gets ugly and complicated is trying to use a "GUI" (Graphical User Interface).

If you look at the heart of JAVA code, you'll find it's been re-factored many times and using as much design paradigms as possible. But the problem is that most "interfaces" are crude and windows-like interfaces that just don't suit the "game-like" interfaces. That's why FLASH became very popular (at one point).

These windows-like GUI (or even web-like interface when you get into JSP) are far from the simplicity of JAVA or Python languages. And then there are "architectures" which require layering of code across multiple servers - again complexifying the steps needed to be coded in order to work (Frameworks like Spring and Hibernate - staying mostly in the JAVA world - as per the OP).

That's why people suggest using something like "Unity" and learning the semantics behind this game engine. You can do 3D and 2D. I'm pretty sure you can do 3D turn-based games with it too.

A quick Google search and I find "Yes - you can make 3D turn-based games too..." which dates all the way back to April 19 2012...

https://forum.unity.com/threads/is-it-easy-to-make-a-turn-based-game.132...

Maybe look into that further ... and use an engine for the game. And I can FIRMLY say that this Game (App) was developed with Unity and is "turn-based": Pocket Sports - Basketball.

https://play.google.com/store/apps/details?id=com.pocketsports.basketball

Download it and you'll see it's ENTIRELY turn-based. And uses 3D dice rolling with a basketball like surface to roll on. It's maybe not an adventure game... But you see that you can do pretty much whatever you would like to do with Unity.

Cheers!

questccg
questccg's picture
Offline
Joined: 04/16/2011
Never tried FLOW...

pelle wrote:
Problem with visual programming is that as soon as you go beyond simple toys it becomes extremely painful and slow compared to typing in code as text...

That's because you've never seen FLOW code. As an Integration Specialist, I've worked for over 15 years with a graphic language called FLOW. It's used on a server which hosts "webservices". There are two (2) types of services you can "code": FLOW or JAVA.

Needless to say, FLOW is used by an Integration Platform which costs in the Millions of dollars to run and operate. But large Fortune 1,000 companies use this platform to tie together transactions for various pieces of software they use to operate their business.

FLOW is graphical. Here take a look:

It uses the concept of a PIPELINE where all data is stored and accumulated. You can transform data, call other services, do complex mappings, even call other systems like a database or even SAP.

What you see in this sample is SQL Result records are being looped over to do some transformational mapping. In this case it is take a date and formatting in to some specific format and then re-mapping the result back into the SQL Result record.

Note: It can do much more with other systems also. But this is a case-by-case basis since "Adapters" are available for a whole gamut of sub-systems to call and interact with.

Note #2: FLOW code is extremely powerful and rather simple to use once you become familiar with it. It also ties-in with Business Processes which are Graphical Representation of transactions that span multiple systems which call either FLOW or JAVA services "behind-the-scenes"...

questccg
questccg's picture
Offline
Joined: 04/16/2011
The problem with the platform

While FLOW and JAVA services are great... Coding "GUIs" for the platform is a living and breathing Hell!

For example is you have a "form" which processes 50 records and allows you to visualize them...

Designing the "form" is relatively easy. They have a toolset similar to what you would find in Visual Basic. The problem is when you want to do custom steps (even simple stuff like validate the format of a field)... It becomes a HUGE effort with very cryptic coding... And most of that work is done in JAVA too.

But it's absolutely HORRIBLE. That's why many customer still use DSP pages (similar to JSP - but "Dynamic" Server Pages) which is older technology (dating back to 2000) but easier to work with HTML 5.0 and CSS 2.0.

Corsaire
Corsaire's picture
Offline
Joined: 06/27/2013
Yea, my former Fortune 500

Yea, my former Fortune 500 employer uses Flow, very good at what it does. Lead times for UI changes forced us away from webMethods for UI.

The question here is what subservient language could Larienna use to attract (or not scare away) users to the proposed tool. Whatever it is, something has to interpret it. I largely worry that designers would avoid a system wth Java baked in and that getting it running would be surprisngly more effort expensive than pre-coded logic blocks or a textual interaction more like Nandeck.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:Problem with visual

Quote:
Problem with visual programming is that as soon as you go beyond simple toys it becomes extremely painful and slow compared to typing in code as text

I agree that the syntax highlighting is awesome, but I also think that beyond simple logic it could be harder to input. The idea is that again, in classic video games (shooter, platformer, etc) the game logic to apply is pretty short and dispersed through objects. But for Turn based strategy games which are more rule and data intensive, it might not be a good solution.

Quote:
Problem with visual programming is that as soon as you go beyond simple toys it becomes extremely painful and slow compared to typing in code as text

Yes python is a good introductory language, but it's too slow for game programming. Still, it could be used as a scripting language. As for java, Well I love java, it's the language used by libGDX which I intend to use.

Quote:
These windows-like GUI (or even web-like interface when you get into JSP) are far from the simplicity of JAVA or Python languages.

I have to contradict you here. Have you checked LibGDX? It's a complete Video game library that runs over Open GL. You won't see a single swing widget in there. It's also surprisingly faster than I thought it would. Finally, it also allow multiple platform development at once: Windows, Unix, Linux, Android, IOS, HTML5. All this is possible because of a virtual java machine that runs everywhere now.

10 Years ago, java was a no go for me because there was no video game application possible. Today with LibGDX and Android, it's simply awesome. With the Scene 2D engine and support for a box2d module and many other features, it's a different world.

Quote:
That's why people suggest using something like "Unity" and learning the semantics behind this game engine. You can do 3D and 2D. I'm pretty sure you can do 3D turn-based games with it too.

I checked unity, but it's more suited for 3D development which I hate. It also increase development time and it's coded in C#, not much experience with it, but seems a bit more reliable as c++. Finally, it's expensive, you have to pay around a thousand dollars to use it.

Still, I intend to design something modular with front ends and back ends that can be swapped to your need. So I imagine it would be possible to make a unity 3D front end, if you really want to as long as C# can communicate with java.

Quote:
Coding "GUIs" for the platform is a living and breathing Hell!

Coding gui is a living hell in any language and platform. This is why I want a modular approach where the gui Design logic is separated from the creation of screen objects. This way, there is no need to hardcode gui, they will be automatically generated. At least that is my objective.

questccg
questccg's picture
Offline
Joined: 04/16/2011
That's why I suggested ...

Unity 3D/2D. You have to learn C# but it's similar to Java and C++ (so they say...) And then you can code you classes and objects right into the engine. I am just guessing at how the "engine" works. Never used it...

But the "engine" is supposed to be VERY powerful too.

GUIs are always the freaken problem. But Unity seems to have taken care of that aspect... Not sure how - because they say you can "code" everything within the "framework/engine".

There are monetary restrictions - I don't like those. Like In-App purchases, you need a "solution" or Ad monetization is another "solution"...

So I'm thinking not everything comes with the "basic Unity engine" and tools...

Would need someone with more of a Game Developer background. I gave up game programming way back in early 2000 after the Dot-Com bubble burst...

Note: Plus only allows 50 users at a time. And Pro only allows 200 users at a time. What if you need support for 1,000 concurrent gamers??? Probably some secret contract negotiation... 200 hardly qualifies for worldly gaming platform.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Some ideas...

Corsaire wrote:
...The question here is what subservient language could Larienna use to attract (or not scare away) users to the proposed tool.

Well this dates back to my University years... But at that time I designed an Engine based on C "Header" (.h) files. It was designed to generate an entire application given one (1) (.h) file. It's been ages ago - since I've delved into that platform.

I did something of the opposite in Open GL where I used 3D Studio to generate me a vertex mapping and then coded a utility to convert the mapping to a C "Header" (.h) file. Made my objects look awesome compared to the basic shapes other students were using...

Ah the good-ol-days where it wasn't at all about competition - just coding and having "fun".

questccg
questccg's picture
Offline
Joined: 04/16/2011
More about the C Header (.h) files

The idea was that you could DECLARE a "struct" with all of the "dynamic" data that could be used by the "engine" which would translate the "dynamic" data into a runnable application.

Sort of a way to pre-declare objects that the Main function would then be use to "RUN" the application.

I get this is what @Larienna is trying to design/build.

And you could hard-code a variable name like "game_data" and the C "Header" (.h) would declare the file and then the compiler would just MERGE the two (source and headers) and produce an executable file.

My guess you would want something like that... right?!

questccg
questccg's picture
Offline
Joined: 04/16/2011
Hmm... I think you could MAYBE do something similar

What you could do is have the Engine allow you to GENERATE all the OBJECTS and then SERIALIZE them to a file. And that could be a BINARY file or something like a Base64 file (encoded - when serialized).

When someone wants to PLAY the game, the simply run the Main and specify the path to the Base64 objects file that could contain all of the games assets.

I think this might work. But like you said, you'd have to code it in JAVA and have an interface (GUI) that lets you produce the objects that can later be loaded via the runnable engine.

Could be possible... Not easy... but possible.

Note: You can make it LANGUAGE AGNOSTIC and code the generation application with JAVA... And then have the runnable engine that reads the "persisted" objects.

Note #2: What I like about it is that your home computer would have to have a runnable and your cellphone would need ANOTHER runnable (App)... So you could control what games can be played on what platform... Some sort of runnable permissions too.

Could be interesting for multiple platforms. Like if you buy the game for computer, it won't work on the cellular and vice-versa...

Or FREE for the computer - but pay a few $ for cellular version...

Lofwyr
Offline
Joined: 02/16/2010
JavaFx

Programming a GUI in java couldn't be easier. In fact, if you go check out JavaFx you'll see that a complete GUI could be completed in literally minutes with extensible code auto-magically generated for everything you place using the GUI construction tools.

But for real though, its point and click :)

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote: You have to learn C#

Quote:
You have to learn C# but it's similar to Java and C++ (so they say...)

C++ memory management and implicit function calls are a pain. I have just taken a class about "C" and "Git" (with my exam tomorrow morning) and I would rather code in C than C++. I am even thinking of refactoring my Wizardry Legacy game in C only (but it would be a waste of time). Java is good for object oriented programming because it stricly impose the paradigm, as C++ allows mix and match of structural and object oriented. I think C# has a garbage collector.

Quote:
The question here is what subservient language could Larienna use to attract (or not scare away) users to the proposed tool.

To give you an idea, the "tool" I intend to build, to make sure everybody is on the same ground. It would allow makings games in 3 steps:

1- Design the database: You can use any DB design/data entry tool. Since the backend can be switched, it could also be no-SQL database. It basically contains the game data or savegame. If your game is very simple, you could simply ignore the back end.

2- Code the Rule Box: Basically a list of methods that can be called from the command line. To simplify the process, I could use java reflection to read the list of rule box method so that a method called "command_move_fleet" would allow the user to type "move fleet" in the console to execute the command. No need to manage command patterns for the user.

At this point you have a working game for testing and prototyping purpose.

3- Design the interface: You define the menu, commands, data to display, screens and the navigation between all those. That could be done by simply inserting data in a database. So it could potentially mean no coding, unless you want something unique. It will then communicate with the front end to make sure those screen gets drawn appropriately.

So far that would mean that once the framework would be solid, only the rule box would require actual basic coding. The rest is simply inserting data at the right place.

Quote:
Could be interesting for multiple platforms. Like if you buy the game for computer, it won't work on the cellular and vice-versa...

Or FREE for the computer - but pay a few $ for cellular version...

That is something I though that the prototype command line version is free for everybody to play but less accessible. Still it allows testing the mechanics of the game. Print, Type and Play model could also be used to simplify testing. Then the real version with all the graphics could be sold on cell phone for example. If a game is fun in command line version, it will be better as a full graphic game

Quote:
Programming a GUI in java couldn't be easier. In fact, if you go check out JavaFx you'll see that a complete GUI could be completed in literally minutes with extensible code auto-magically generated for everything you place using the GUI construction tools.

I'll have to try java FX eventually. Want to port my C sound generator and create a music generator. I could eventually make a front end for my library. I just lack of time.

That's what I like about interchangeable front ends and back ends, it would give more flexibility.

Anyway, have to sleep, exam tomorrow.

questccg
questccg's picture
Offline
Joined: 04/16/2011
HUGE project

larienna wrote:
...It would allow makings games in 3 steps:

1- Design the database: You can use any DB design/data entry tool. Since the backend can be switched, it could also be no-SQL database. It basically contains the game data or savegame. If your game is very simple, you could simply ignore the back end.

The problem with a database is many people will not know how to support it on a device like a cellular. A serialized file, that something easy to know both the complete size and only one file. So I think this part of the design is flawed. Do you actually want people to install MySQL on their cellular phones and manage a database? Not a good idea... IMHO.

larienna wrote:
2- Code the Rule Box: Basically a list of methods that can be called from the command line. To simplify the process, I could use java reflection to read the list of rule box method so that a method called "command_move_fleet" would allow the user to type "move fleet" in the console to execute the command. No need to manage command patterns for the user.

At this point you have a working game for testing and prototyping purpose.

Listing an interpreter that allows you to perform certain operations is one thing... But how does it know how to INTERACT with objects in your game's "universe"??? You need to pre-design artifacts that will serve as stubs with logic that can be injected.

If you Command = Move Fleet, your "Fleet" object is going to require a linked list of commands that can be performed (like "Move Fleet").

But then you have another problem... What IS "Move Fleet"??? What actions does it do -- how does it interact with the rest of the scene?

larienna wrote:
3- Design the interface: You define the menu, commands, data to display, screens and the navigation between all those. That could be done by simply inserting data in a database. So it could potentially mean no coding, unless you want something unique. It will then communicate with the front end to make sure those screen gets drawn appropriately.

So far that would mean that once the framework would be solid, only the rule box would require actual basic coding. The rest is simply inserting data at the right place.

The rest of the assets is not easy either. You have to link image files, all kinds of things like image masks for GIFs or JPGs... Mess with all the transparency... And then you need a way to inject "behaviors".

What I mean by this is "If you click on < Button1 >, < Screen1 > should appear at position (100, 100);" All of that is going to take a TREMENDOUS amount of effort in designing.

I know you are thinking "small victories" ... but this is a HUGE undertaking. Why do you think that Unity exists??? Because it's supposed to have tools that allow you to develop your game.

I personally can't picture a SIMPLE engine that does all of this. I can picture your compromise of a "sample" which does hardly anything qualifying ... But to actually design the tools that create all the objects and the corresponding actions, etc. Will be a real hard project.

At least that's what I think... IMHO.

Best of luck(?!) with this endeavor.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Personally I would "explore" NES ROMS

If you are looking for 2D games... Why not focus on the NES or SNES emulators and see how to put together a ROM. At least then you'll be using a platform designed for gaming...

Just a thought... It might be cool creating a tool to make your own NES or SNES games/ROMs.

I know it's old tech and will not work on cellular... But at least with such an effort, you could get real good results.

Just am idea... Cheers!

questccg
questccg's picture
Offline
Joined: 04/16/2011
About ROMs

This reminds me that at some point in time, I wanted to design a Nintendo DS game (mobile console). Now while we have touch screen on cellulars - before only the Nintendo DS had a tactile screen.

And so I found DS Game Maker (not Game Maker - which is a PC based game development system)...

ASIDE: If you look into "Game Maker" it is designed for 2D games or games with sprites like in all those "Secret of Mana" RPG-genre games.

Back to where I was... So this 15 year old developed a game making "studio" which allowed game designers to work on rooms and create DS Games. Which is freaken awesome - in its own right.

I still own my DS - even if they are not making games for it... I still kinda like the small two-screen mobile unit. I wish that at some point with some homebrew technology I could create my own Nintendo DS Game.

Just something I'd like to do (if its even possible now...)

Cheers.

FrankM
Offline
Joined: 01/27/2017
Partial solutions

First, I think making a serialized-file "driver" for the database would be relatively simple.

The second point is more serious, in that there definitely needs to be a way to pass parameters.

The "object-oriented" approach would be something like

fleet(109).move(20, 12)

The "command-oriented" approach would be something like

move -fleet 109 -destination [ 20, 12 ]

In either case, the command line input would need to silently inherit things like the current player, turn number, board state, etc.

The third step (adding graphical elements) is almost beyond the scope of a prototyping tool, but would be a real nice thing to have for demo purposes.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Before I continue, just want

Before I continue, just want to say that I do appreciate the criticisms, it allows finding flaws in my vision. Second, many of what I describe has already been done before in a previous version of the project I started 2 years ago but with different objectives. So most things I say can be done. Sorry if it get really technical for those non-programmers.

Quote:
Do you actually want people to install MySQL on their cellular phones and manage a database?

Solution: SQLite, very small fast, and store everything in 1 file. No server required, used by many cell phone app, comes with the Android API but I use Sqlite4Java which support Windows, Mac, Linux, Android with the same driver. Hundreds of database editing software are available for SQLite, my only criticism, is that very few free software offer manual data entry. They assume you import data or use your program to do so.

Quote:
What IS "Move Fleet"??? What actions does it do -- how does it interact with the rest of the scene?

The "command-oriented" approach would be something like

move -fleet 109 -destination [ 20, 12 ]

Effectively, a command could be like:

move fleet 3 -d orientis

Which means move fleet number 3 to system orientis. Reflection could be used to interpret method signature to know what the parameter means or simply use the order of the parameters. So example method:

command_move_fleet ( int i_id, int d_destination )

could allow inputting command as:

move fleet -i 3 -d 25
or
move fleet --id 3 --destination 25
or
move fleet 3 25

Those are just examples of possibilities that could be used.

Quote:

A serialized file, that something easy to know both the complete size and only one file. So I think this part of the design is flawed.

First, I think making a serialized-file "driver" for the database would be relatively simple.

One problem with object oriented programming is that people think object oriented, so when they use an SQL database, they use boiler plate code to convert their Java object into SQL records. That is actually painful and it is something that I experienced with Wizardry Legacy with huge regrets. It also disperse your game logic at multiple places in the code.

The soltion is to think relational and do not match any database record with an object. In the project I made 2 years ago, that is what I did because I had no way to predict which class would exist in the game, since I needed to support any kind of game (not all game have fleets). So instead of making a fleet class which contains the game logic and data storage, there is simply no fleet class. A method like move fleet would roughly look like:

1. read fleet data 3 from the database
2. verify destination 25 is a valid target
3. Calculate travel time from fleet 3 current location to destination
4. update the fleet record in the database with new travel time and destination.

As you can see, to fleet objects, you read data from the DB, change it and save it to the DB. Your save game is your DB, in fact saving your game is simply done by closing the database. No objects in memory to serialize. The whole state of the game is in the DB, any objects in memory can be recreated from the content of the DB. This is also why I say only basic programming knowledge are required, you might not need to design a single class.

Quote:
The rest of the assets is not easy either. You have to link image files, all kinds of things like image masks for GIFs or JPGs... Mess with all the transparency...

That is libgdx's job. There is also another library called Lanterna which allows text based user interface (like edit.com editor dos/windows used to have). That is another front end option for in-development status projects without graphics.

Quote:
What I mean by this is "If you click on < Button1 >, < Screen1 > should appear at position (100, 100);" All of that is going to take a TREMENDOUS amount of effort in designing.

Again, libgdx's job, using Table Layout management. I successfully in my old project generated an entire dataform using only an SQL query and a couple of information. Xataface also use the same approach, you tell it how to query the data and give some parameters, and all the fields are generated automatically with CRUD functionalities.

Quote:
Why do you think that Unity exists??? Because it's supposed to have tools that allow you to develop your game.

Yes, but it is not designed to make Turn Based Strategy game. All the work I would do now, would have to be redone in Unity, because unity does not do anything of what I need. It could be good for making a front end, but all the core game logic management is missing. They are lot of tools in unity, but they are useless too me. For Example, I don't need a story scene building tool, since there will be no story scenes in my game.

Quote:
Why not focus on the NES or SNES emulators and see how to put together a ROM. At least then you'll be using a platform designed for gaming.

First there is license restriction, second the build tools are not public, and third it's not deployable. Even programming for more recent console, you are not going to deploy your first game there.

Quote:
In either case, the command line input would need to silently inherit things like the current player, turn number, board state,

That will be possibly variables in the rule box. Some variables like players, are common to all games. So I could handle it in my library because it could also be used for multiplayer communication management. I already have some ideas for a turn based database replication server, but without any working games, I cannot test anything.

Quote:
The third step (adding graphical elements) is almost beyond the scope of a prototyping tool, but would be a real nice thing to have for demo purposes.

That would be the second phase of development. In order to reduce time lost due to refractoring, I want to make the command line inferface as solid as possible that will support as many game mechanics and play sequence possibible. So that when I start desiging the interface for the front end, I know what I can expect from a game.

Hope everything is more clear. The goal is yo be able to design TBSG as quickly as possible. The deployment of those games is not a priority for now.

pelle
pelle's picture
Offline
Joined: 08/11/2008
I think we all got a bit too

I think we all got a bit too far here discussing implementation details. It is easy to fall into that trap. Remember that the goal is always to keep as many doors as possible open for as long as possible. Do not decide on what framework or language to use for the gui until you really must. The same for deciding what/if to use a database or game engine. Each part can be made in the language that makes the most sense and you should not program yourself into a corner by making decisions too soon. But of course also not implement generic interfaces/factories etc that you will probably never need.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:But of course also not

Quote:
But of course also not implement generic interfaces/factories etc that you will probably never need.

That is a bit the philosophy of agile. Do only what you need or what is the most urgent. The rest can wait. That is what I intend to do, develop the bare minimum but let the door open for more stuff.

Quote:
I think we all got a bit too far here discussing implementation details.

Sorry, some people doubted it was possible. Still, I somewhat got the answer to my original question.

Masacroso
Masacroso's picture
Offline
Joined: 05/05/2014
Time. I would need at least

Time. I would need at least some years of practice, and strong motivation and effort, before to write a working multiplayer web-based game.

It is A LOT of work, not only to write the base code, also the design. The effort doesnt make sense, to me, to make it... I have many better things, and far more interesting, to do with my time.

(I did in the past little scripts/programs in a variety of languages.)

Syndicate content


forum | by Dr. Radut