Tôi đã tạo một bản đồ chiều cao ngẫu nhiên và bây giờ tôi muốn tạo ra các dòng sông. Tôi đã tạo ra một thuật toán dựa trên một * để làm cho các dòng sông chảy từ các đỉnh núi ra biển và bây giờ tôi đang trong quá trình tìm ra một thuật toán tao nhã để kết xuất chúng.
Đó là 2D, vuông, mapgrid. Các ô mà dòng sông có giá trị nguyên đơn giản với dạng này: rivernumber && pointOrder. Tức là: 10, 11, 12, 13, 14, 15, 16 ... 1 + N cho dòng sông đầu tiên, 20,21,22,23 ... 2 + N cho lần thứ hai, v.v. Điều này được tạo ra trong thời gian tạo lưới bản đồ và nó được thực hiện chỉ một lần, khi thế giới được tạo.
Tôi muốn coi mỗi dòng sông là một vectơ, nhưng có một vấn đề, nếu cùng một dòng sông có các nhánh (vì tôi tạo ra một số tiếng ồn để tạo ra các nhánh), tôi không thể chỉ kết nối các điểm theo thứ tự.
Cách thay thế thứ hai là tạo ra một thuật toán phức tạp, trong đó phân tích từng điểm, kiểm tra xem điểm tiếp theo không phải là một nhánh, nếu vậy kích hoạt một thuật toán khác chăm sóc nhánh sau đó quay trở lại sông chính, v.v. Rất phức tạp và không phù hợp.
Có lẽ có một giải pháp trong thuật toán thế hệ hoặc thuật toán kết xuất dòng sông thường được sử dụng trong những trường hợp này và tôi không biết.
Bất cứ lời khuyên? Cảm ơn!!