#Text-based Game

1 messages · Page 1 of 1 (latest)

lucid mauve
#

I'm having trouble visualizing what this would look like 🤔 do you have a mockup or any examples?

What would the screen/game window look like to the player?

(Once I get the idea, I might have some insight for ya!)

sly gull
#

Let me find my layout I created 🙂

sly gull
#

Wow, I some how misplaced my PSD. I will mock something up quick.

#

Wait found it. lol

#

Okay this is the rough layout idea I had. I wanted a text based adventure game with some UI that makes adventuring interesting and visual.

#

This is one of many story ideas I have planned, which will affect the layout some depending on the type of story it is. This is more RPG I'd say.

lucid mauve
#

Ooh neat! Thanks for sharing, this helps a lot!

sly gull
# lucid mauve Ooh neat! Thanks for sharing, this helps a lot!

Thanks and thank you for helping. I love storytelling and I want to focus on that above all else. Which is why I want to get this system going so I can do that. Programming and telling stories are not the same mind set and I hate going back and forth lol

lucid mauve
#

So I'm thinking you'll want to practice with at least some of the following in Unity/C# to start:

- Unity UI (uGUI) as described here: https://docs.unity3d.com/Manual/UIToolkits.html
    - RectTransforms
        - Anchor percentages vs. (screen pixel) position
    - TextMeshPro for text
    - Images
    - Sliders
    - Buttons
    - Scroll Views (ScrollRects + Scrollbars)
    - RawImage + RenderTexture (asset) + Camera setups (allows you to render what a 2nd camera sees into a texture that shows in your UI, which may or may not help in visualizing your map data)


- Data Structures
- Object-Oriented vs. Component-Oriented Programming (Not saying use 1 or the other, you can take advantage of both including clever use of inheritance and components)
- Encapsulation in C#
    - C# getter/setter properties (instead of directly-exposing fields (variables))


- Programming design patterns (awesome resource here, despite being written in C++, it is VERY applicable! https://gameprogrammingpatterns.com/contents.html)
    - Command pattern (allows you to describe actions in the form of data, which would be useful in describing your player's/characters' actions)


- Serialization in Unity including topics such as:
    - MonoBehaviours vs. ScriptableObjects
    - [SerializeField]
    - [Serializable]
    - OnValidate (message, usable in both MonoBehaviours and ScriptableObjects alike)
    - ISerializationCallbackReceiver (interface)


- Saving and loading game state
    - JSON (super easy in Unity already with JsonUtility and EditorJsonUtility classes)
    - C# TPL async/await to keep your app responsive, and not freeze while saving/loading files
        - C# Task.Run(...)
#

On a side note, I also love RPGs (action RPGs typically) and I've been looking up stuff on YouTube like "how to make a top-down 2D pixel art RPG" and such, just to see different ideas and programming approaches to compare to

#

So that could also help you too, even if you know what you're doing!

sly gull
lucid mauve
#

Lastly, the Unity docs are my friend.
Get good at looking through them and it'll be a LOT easier to master Unity!

They have the Manual, written in plain English:
https://docs.unity3d.com/Manual

They have the Scripting API, which details all the API members (names/descriptions of classes, methods, parameters, etc.)
https://docs.unity3d.com/ScriptReference/index.html

They also have Package-specific docs, which can be really helpful working with certain packages for advanced topics like Addressables, Cinemachine, Test Framework).
Usually what I do is search up (on Google or elsewhere) "Unity <insert package name> docs" and the 1st result will bring me there 😂

For example, if I Google "Unity Cinemachine docs", I'll get this page:
https://docs.unity3d.com/Packages/com.unity.cinemachine@2.3/manual/index.html

lucid mauve
#

Welcome! This is the intro to a new series I'm making about how to make a top down action RPG similar to the Legend of Zelda. This video contains an overview of the project, as well as a discussion of assets. Enjoy!

Tiled: https://thorbjorn.itch.io/tiled

Tiled2Unity: http://www.seanba.com/tiled2unity

Art Assets: https://opengameart.org/con...

▶ Play video
#

So yeah!
That is all™️! (for now)

Goodluck with everything 😄

sly gull
lucid mauve
#

Right!

Pokemon did that for me too. I've been back on MapleStory lately, and was addicted to RuneScape for years

sly gull
#

Thank you for the help! I'm going to dive into this and see what I can dig up!

lucid mauve
#

Hah that's awesome, and absolutely! Glad to help,

#

I usually try to start describing my game with the appropriate data (a "data-driven" approach).

Once I have the data, then I can start rendering/drawing it to the screen however I see fit, including adding controls for the player to start interacting with it!

sly gull
#

What do you mean?

lucid mauve
#

So in your example, I'd look at what data I'd have to represent first, without any visuals at all.
Nothing about rendering, graphics, drawing, etc.

You have:

  • A party
  • One or more characters
  • Each character has a name
  • Each character's status (HP/SP/EXP)
  • A story, including a sequence/list of strings
  • The current day and time
  • The player's funds
  • The player's (or each character's) inventory
  • The player's alignment in the story (if I'm understanding correctly)
  • Maps (like The East Woods, etc.)
  • etc.
#

Then I start breaking them down into simpler parts, and deciding how to best represent the data in Unity

#

For a very basic example, I might use this to represent all the different text that appears in a single map:

[CreateAssetMenu]
public class MapStorySequence : ScriptableObject {
    [SerializeField] private List<string> values = new();
}
#

But of course, I don't break down the entire game's data at once.

I do this in steps, so I can just get a quick prototype up-and-running

#

Whatever's most important, I'd start thinking about how to best represent that data

#

Once you got the data, you can start actually doing stuff (showing it to the player on-screen)

#

If that doesn't help you though, sorry. 😂
Just the way I happen to work!

sly gull
#

Ohhh I like it!

#

It makes sense and a better way IMO to start. I always start with systems then end up adding attributes later lol

#

I will try this concept out!

sly gull
lucid mauve
#

Haha ahh yeah, same!